From 56b87672fd04ca0031f8a9c4de06f0c406bc0a81 Mon Sep 17 00:00:00 2001 From: Justin Maximillian Kimlim Date: Tue, 16 Apr 2024 00:49:26 +0700 Subject: [PATCH 1/4] feat: increase daily upload limit --- .../api/src/resolvers/importers/uploadImportFileResolver.ts | 2 +- packages/api/src/util.ts | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/api/src/resolvers/importers/uploadImportFileResolver.ts b/packages/api/src/resolvers/importers/uploadImportFileResolver.ts index 0a1c0dd53..40d0fc529 100644 --- a/packages/api/src/resolvers/importers/uploadImportFileResolver.ts +++ b/packages/api/src/resolvers/importers/uploadImportFileResolver.ts @@ -16,7 +16,6 @@ import { generateUploadSignedUrl, } from '../../utils/uploads' -const MAX_DAILY_UPLOADS = 1 const VALID_CONTENT_TYPES = ['text/csv', 'application/zip'] const extensionForContentType = (contentType: string) => { @@ -61,6 +60,7 @@ export const uploadImportFileResolver = authorized< const dirPath = `imports/${uid}/${dateStr}/` const fileCount = await countOfFilesWithPrefix(dirPath) + const MAX_DAILY_UPLOADS = env.fileUpload.dailyUploadLimit if (fileCount >= MAX_DAILY_UPLOADS) { return { errorCodes: [UploadImportFileErrorCode.UploadDailyLimitExceeded], diff --git a/packages/api/src/util.ts b/packages/api/src/util.ts index d42f84ce1..9e915032a 100755 --- a/packages/api/src/util.ts +++ b/packages/api/src/util.ts @@ -81,6 +81,7 @@ export interface BackendEnv { gcsUploadBucket: string gcsUploadSAKeyFilePath: string gcsUploadPrivateBucket: string + dailyUploadLimit: number } sender: { message: string @@ -144,6 +145,7 @@ const nullableEnvVars = [ 'POSTHOG_API_KEY', 'TWITTER_BEARER_TOKEN', 'GCS_UPLOAD_PRIVATE_BUCKET', + 'GCS_UPLOAD_DAILY_LIMIT', 'SENDER_MESSAGE', 'SENDER_FEEDBACK', 'SENDER_GENERAL', @@ -275,6 +277,9 @@ export function getEnv(): BackendEnv { gcsUploadBucket: parse('GCS_UPLOAD_BUCKET'), gcsUploadSAKeyFilePath: parse('GCS_UPLOAD_SA_KEY_FILE_PATH'), gcsUploadPrivateBucket: parse('GCS_UPLOAD_PRIVATE_BUCKET'), + dailyUploadLimit: parse('GCS_UPLOAD_DAILY_LIMIT') + ? parseInt(parse('GCS_UPLOAD_DAILY_LIMIT'), 10) + : 30, // default to 30 } const sender = { message: parse('SENDER_MESSAGE'), From 636fa177127455e7b58f21f71b1a5e4ac3d9b145 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Wed, 24 Apr 2024 16:39:46 -0700 Subject: [PATCH 2/4] Default to 5 items --- packages/api/src/util.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/api/src/util.ts b/packages/api/src/util.ts index 9e915032a..ee427c603 100755 --- a/packages/api/src/util.ts +++ b/packages/api/src/util.ts @@ -279,7 +279,7 @@ export function getEnv(): BackendEnv { gcsUploadPrivateBucket: parse('GCS_UPLOAD_PRIVATE_BUCKET'), dailyUploadLimit: parse('GCS_UPLOAD_DAILY_LIMIT') ? parseInt(parse('GCS_UPLOAD_DAILY_LIMIT'), 10) - : 30, // default to 30 + : 5, // default to 5 } const sender = { message: parse('SENDER_MESSAGE'), From 83526e1b56a5a828916438d7829c1a52cbb3d538 Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Thu, 25 Apr 2024 10:55:27 +0800 Subject: [PATCH 3/4] increase rss parser timeout to 20 seconds --- packages/api/src/utils/parser.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/api/src/utils/parser.ts b/packages/api/src/utils/parser.ts index 3122a72bd..8107d978a 100644 --- a/packages/api/src/utils/parser.ts +++ b/packages/api/src/utils/parser.ts @@ -78,7 +78,7 @@ const ARTICLE_PREFIX = 'omnivore:' export const FAKE_URL_PREFIX = 'https://omnivore.app/no_url?q=' export const RSS_PARSER_CONFIG = { - timeout: 5000, // 5 seconds + timeout: 20000, // 20 seconds headers: { // some rss feeds require user agent 'User-Agent': From d51bc0c92e3b921828f8572e9b6d8f4c179c7bbc Mon Sep 17 00:00:00 2001 From: jivesh Date: Mon, 29 Apr 2024 01:58:21 +0800 Subject: [PATCH 4/4] Add option to stop volume rocker from scrolling --- .../feature/reader/ReaderPreferencesView.kt | 23 ++++++++++++++++++- .../omnivore/feature/reader/WebReader.kt | 6 +++++ .../feature/reader/WebReaderViewModel.kt | 13 ++++++++++- .../app/omnivore/omnivore/utils/Constants.kt | 1 + .../app/src/main/res/values-de/strings.xml | 1 + .../src/main/res/values-zh-rCN/strings.xml | 1 + .../src/main/res/values-zh-rTW/strings.xml | 1 + .../app/src/main/res/values/strings.xml | 1 + 8 files changed, 45 insertions(+), 2 deletions(-) diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/reader/ReaderPreferencesView.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/reader/ReaderPreferencesView.kt index 5505cd6bb..de19c8193 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/reader/ReaderPreferencesView.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/reader/ReaderPreferencesView.kt @@ -43,6 +43,8 @@ fun ReaderPreferencesView(webReaderViewModel: WebReaderViewModel) { val themeState = remember { mutableStateOf(currentWebPreferences.storedThemePreference) } + val volumeForScrollState = remember { mutableStateOf(currentWebPreferences.shouldUseVolumeRockerForScroll) } + OmnivoreTheme { Column( modifier = Modifier @@ -239,6 +241,24 @@ fun ReaderPreferencesView(webReaderViewModel: WebReaderViewModel) { } ) } + + Row(verticalAlignment = Alignment.CenterVertically) { + Text( + stringResource(R.string.reader_preferences_view_volume_scroll), + style = TextStyle( + fontSize = 15.sp, + fontWeight = FontWeight.Normal, + color = Color(red = 137, green = 137, blue = 137)) + ) + Spacer(modifier = Modifier.weight(1.0F)) + Switch ( + checked = volumeForScrollState.value, + onCheckedChange = { + volumeForScrollState.value = it + webReaderViewModel.updateVolumeRockerForScroll(it) + } + ) + } } } } @@ -285,5 +305,6 @@ data class WebPreferences( val storedThemePreference: String, val fontFamily: WebFont, val prefersHighContrastText: Boolean, - val prefersJustifyText: Boolean + val prefersJustifyText: Boolean, + var shouldUseVolumeRockerForScroll: Boolean ) diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/reader/WebReader.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/reader/WebReader.kt index 988565701..e56d10853 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/reader/WebReader.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/reader/WebReader.kt @@ -170,11 +170,17 @@ fun WebReader( if (event.action == KeyEvent.ACTION_DOWN) { when (keyCode) { KeyEvent.KEYCODE_VOLUME_UP -> { + if (!webReaderViewModel.shouldUseVolumeRockerForScroll) { + return@setOnKeyListener false + } scrollVertically(OmnivoreWebView.Direction.UP) return@setOnKeyListener true } KeyEvent.KEYCODE_VOLUME_DOWN -> { + if (!webReaderViewModel.shouldUseVolumeRockerForScroll) { + return@setOnKeyListener false + } scrollVertically(OmnivoreWebView.Direction.DOWN) return@setOnKeyListener true } diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/reader/WebReaderViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/reader/WebReaderViewModel.kt index 925c03c7c..74d55d4ce 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/reader/WebReaderViewModel.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/reader/WebReaderViewModel.kt @@ -106,6 +106,8 @@ class WebReaderViewModel @Inject constructor( private val showHighlightColorPalette = MutableLiveData(false) val highlightColor = MutableLiveData(HighlightColor()) + var shouldUseVolumeRockerForScroll = true + fun loadItem(slug: String?, requestID: String?) { this.slug = slug if (isLoading || webReaderParamsLiveData.value != null) { @@ -470,6 +472,7 @@ class WebReaderViewModel @Inject constructor( val prefersHighContrastFont = datastoreRepo.getString(DatastoreKeys.prefersWebHighContrastText) == "true" val prefersJustifyText = datastoreRepo.getString(DatastoreKeys.prefersJustifyText) == "true" + val shouldUseVolumeRockerForScroll = datastoreRepo.getString(DatastoreKeys.volumeForScroll) != "false" WebPreferences( textFontSize = storedFontSize ?: 12, @@ -479,7 +482,8 @@ class WebReaderViewModel @Inject constructor( storedThemePreference = storedThemePreference, fontFamily = storedWebFont, prefersHighContrastText = prefersHighContrastFont, - prefersJustifyText = prefersJustifyText + prefersJustifyText = prefersJustifyText, + shouldUseVolumeRockerForScroll = shouldUseVolumeRockerForScroll ) } @@ -555,6 +559,13 @@ class WebReaderViewModel @Inject constructor( enqueueScript(script) } + fun updateVolumeRockerForScroll(shouldUseVolumeRockerForScroll: Boolean) { + runBlocking { + datastoreRepo.putString(DatastoreKeys.volumeForScroll, shouldUseVolumeRockerForScroll.toString()) + } + this.shouldUseVolumeRockerForScroll = shouldUseVolumeRockerForScroll + } + fun applyWebFont(font: WebFont) { runBlocking { datastoreRepo.putString(DatastoreKeys.preferredWebFontFamily, font.rawValue) diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/utils/Constants.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/utils/Constants.kt index b4962979a..684cbdd3b 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/utils/Constants.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/utils/Constants.kt @@ -23,6 +23,7 @@ object DatastoreKeys { const val lastUsedSavedItemFilter = "lastUsedSavedItemFilter" const val lastUsedSavedItemSortFilter = "lastUsedSavedItemSortFilter" const val preferredTheme = "preferredTheme" + const val volumeForScroll = "volumeForScroll" } object AppleConstants { diff --git a/android/Omnivore/app/src/main/res/values-de/strings.xml b/android/Omnivore/app/src/main/res/values-de/strings.xml index afaefdef8..22f8bfcdc 100644 --- a/android/Omnivore/app/src/main/res/values-de/strings.xml +++ b/android/Omnivore/app/src/main/res/values-de/strings.xml @@ -148,6 +148,7 @@ Text ausrichten + Verwenden Sie die Lautstärketasten zum Scrollen Wir konnten deinen Inhalt nicht abrufen. Lese-Einstellungen Notizbuch diff --git a/android/Omnivore/app/src/main/res/values-zh-rCN/strings.xml b/android/Omnivore/app/src/main/res/values-zh-rCN/strings.xml index 780ae2bcd..b198f4bd1 100644 --- a/android/Omnivore/app/src/main/res/values-zh-rCN/strings.xml +++ b/android/Omnivore/app/src/main/res/values-zh-rCN/strings.xml @@ -149,6 +149,7 @@ 对齐文字 + 使用音量按钮滚动 我们无法取得您的内容。 阅读器偏好设定 笔记 diff --git a/android/Omnivore/app/src/main/res/values-zh-rTW/strings.xml b/android/Omnivore/app/src/main/res/values-zh-rTW/strings.xml index c634719cf..f43bba4e3 100644 --- a/android/Omnivore/app/src/main/res/values-zh-rTW/strings.xml +++ b/android/Omnivore/app/src/main/res/values-zh-rTW/strings.xml @@ -148,6 +148,7 @@ 對齊文字 + 使用音量按鈕捲動 我們無法取得您的內容。 閱讀器偏好設定 筆記本 diff --git a/android/Omnivore/app/src/main/res/values/strings.xml b/android/Omnivore/app/src/main/res/values/strings.xml index fba0f250b..d74a443c4 100644 --- a/android/Omnivore/app/src/main/res/values/strings.xml +++ b/android/Omnivore/app/src/main/res/values/strings.xml @@ -148,6 +148,7 @@ Auto High Contrast Text Justify Text + Use Volume Rocker to scroll We were unable to fetch your content.