From eaa34927098de5965a6278c68ad2797ee574d1ca Mon Sep 17 00:00:00 2001 From: Hamish <133548095+Hamster45105@users.noreply.github.com> Date: Wed, 15 May 2024 19:01:36 +1000 Subject: [PATCH 01/14] Small fixes - Add help page (copied from the Unitto website) - Update README - Add security page (copied from Unitto wiki) - Update body mass button to link to new NumberHub help page - Remove Rate this app button - Remove TOS and Privacy Policy buttons --- HELP.md | 59 +++++++++++++++++++ README.md | 26 +++++--- SECURITY.md | 29 +++++++++ core/base/src/main/res/values-tr/strings.xml | 2 +- .../feature/bodymass/BodyMassScreen.kt | 2 +- .../feature/settings/SettingsScreen.kt | 8 --- .../feature/settings/about/AboutScreen.kt | 28 --------- 7 files changed, 107 insertions(+), 47 deletions(-) create mode 100644 HELP.md create mode 100644 SECURITY.md diff --git a/HELP.md b/HELP.md new file mode 100644 index 00000000..8a056592 --- /dev/null +++ b/HELP.md @@ -0,0 +1,59 @@ +# Help + +## ⌚ Add more time zones? + +No. + +
+But... why? + +Each time zone has its' own set of rules: +- Offset from GMT +- Daylight saving time offset +- Date when daylight saving time is used + +This data always changes. +There are 3 solutions: + +### 1. Paid API service + +**✅Pros:** +- Almost all time zones and cities +- Always up-to-date + +**❌Cons:** +- Costs money +- Needs Internet, can go down, needs a caching mechanism +- Can change API and break Unitto +- Needs to be translated + +### 2. Create my own API service +Pros and cons are same, except this one is free cheaper (you still need to pay). + +### 3. Android's time zone provider (this is what Unitto uses) + +read more: https://source.android.com/docs/core/permissions/timezone-rules + +**✅Pros:** +- Almost all time zones +- Free +- No need to translate (provided by system) +- Doesn't break Unitto +- Works offline, never goes down + +**❌Cons:** +- Less cities +- Less frequent updates (or none if you are unlucky) +
+ +## 👩‍⚕️ Body Mass Index + +Please note that the values displayed in the app are intended for entertainment purposes only. They can not replace professional medical advice. Please don't use Body Mass calculator if you are: +- Under 21 +- Pregnant +- Diagnosed with an eating disorder + +Please contact your care provider for more information. + +## 💵 Wrong Currency Rates? +Currency rates are updated daily. There's no real-time market monitoring in the app. \ No newline at end of file diff --git a/README.md b/README.md index 44e1339b..508c87d9 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,10 @@ +# NumberHub +➗ Your Hub for ✖️ Math / 💲 Currency rates / 📆 Date calculations / ⌚ Time zones + +> [!NOTE] +> This app was originally created by [sadellie](https://github.com/sadellie). + Unfortunately, it has been archived on March 1st, 2024 (https://github.com/sadellie/unitto) without any notice or explanation. Since there has been no activity from sadellie on GitHub since then, I guess they are not actively working on projects anymore. I will maintain this app, but I do not plan to add new features. I don't have enough time to do that, but you are welcome to contribute. I will review and merge your pull requests. +

@@ -7,14 +14,15 @@

-## Notice +## Download + + + -This app was originally created by [sadellie](https://github.com/sadellie). -Unfortunately, it has been archived on March 1st, 2024 (https://github.com/sadellie/unitto) -without any notice or explanation. -Since there has been no activity from sadellie on GitHub since then, I guess -they are not actively working on projects anymore. + + -I will maintain this app, but I do not plan to add new features. -I don't have enough time to do that, but you are welcome to contribute. -I will review and merge your pull requests. +## Help +See [HELP.md](HELP.md) diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 00000000..8952d1f2 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,29 @@ +### `com.sadellie.unitto.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION` + +Read (boring): https://developer.android.com/about/versions/14/behavior-changes-14#runtime-receivers-exported + +### `android.permission.INTERNET` + +Used in **Unit Converter** to update currency rates. Requests are made only when you select a currency unit. + +### `android.permission.ACCESS_NETWORK_STATE` + +Used in Unit Converter as a callback. Retries to update currency rates if there was an error (no network, for example) and the Internet connection is back. + +### `android.permission.WAKE_LOCK` + +Not used explicitly. Added automatically by Widget feature. + +### `android.permission.RECEIVE_BOOT_COMPLETED` + +Not used explicitly. Added automatically by Widget feature. + +### `android.permission.FOREGROUND_SERVICE` + +Not used explicitly. Added automatically by Widget feature. + +### Non-free network service + +Non-free doesn't mean that you need to pay, put your credit card away. In this context it means that you can't host it on your machine (why would anyone want to host a currency API service?). + +The app uses [Free Currency Rates API by fawazahmed0](https://github.com/fawazahmed0/exchange-api). Requests are send to `cdn.jsdelivr.net`. \ No newline at end of file diff --git a/core/base/src/main/res/values-tr/strings.xml b/core/base/src/main/res/values-tr/strings.xml index b03731db..272adc89 100644 --- a/core/base/src/main/res/values-tr/strings.xml +++ b/core/base/src/main/res/values-tr/strings.xml @@ -146,7 +146,7 @@ Maybe this can be labeled better? Let me know. It should be something that can d Boşluk Başlangıç ekranı Uygulamayı başlattığınızda hangi ekranın gösterileceğini seçin - + Sistem diff --git a/feature/bodymass/src/main/java/app/myzel394/numberhub/feature/bodymass/BodyMassScreen.kt b/feature/bodymass/src/main/java/app/myzel394/numberhub/feature/bodymass/BodyMassScreen.kt index d1b48193..bd08efdb 100644 --- a/feature/bodymass/src/main/java/app/myzel394/numberhub/feature/bodymass/BodyMassScreen.kt +++ b/feature/bodymass/src/main/java/app/myzel394/numberhub/feature/bodymass/BodyMassScreen.kt @@ -204,7 +204,7 @@ private fun BodyMassScreen( ElevatedButton( onClick = { - openLink(mContext, "https://sadellie.github.io/unitto/help#body-mass-index") + openLink(mContext, "https://github.com/Myzel394/NumberHub/blob/master/HELP.md#body-mass-index") }, ) { Text(text = stringResource(R.string.time_zone_no_results_button)) // TODO Rename diff --git a/feature/settings/src/main/java/app/myzel394/numberhub/feature/settings/SettingsScreen.kt b/feature/settings/src/main/java/app/myzel394/numberhub/feature/settings/SettingsScreen.kt index d1967982..f5432ca8 100644 --- a/feature/settings/src/main/java/app/myzel394/numberhub/feature/settings/SettingsScreen.kt +++ b/feature/settings/src/main/java/app/myzel394/numberhub/feature/settings/SettingsScreen.kt @@ -329,14 +329,6 @@ private fun SettingsScreen( ) } - if (BuildConfig.STORE_LINK.isNotEmpty()) { - ListItem( - icon = Icons.Default.RateReview, - headlineText = stringResource(R.string.settings_rate_this_app), - modifier = Modifier.clickable { openLink(mContext, BuildConfig.STORE_LINK) }, - ) - } - ListItem( icon = Icons.Default.Info, headlineText = stringResource(R.string.settings_about_unitto), diff --git a/feature/settings/src/main/java/app/myzel394/numberhub/feature/settings/about/AboutScreen.kt b/feature/settings/src/main/java/app/myzel394/numberhub/feature/settings/about/AboutScreen.kt index d3e20f72..7a479ed2 100644 --- a/feature/settings/src/main/java/app/myzel394/numberhub/feature/settings/about/AboutScreen.kt +++ b/feature/settings/src/main/java/app/myzel394/numberhub/feature/settings/about/AboutScreen.kt @@ -85,34 +85,6 @@ private fun AboutScreen( ) } - // TERMS AND CONDITIONS - item { - ListItem( - icon = Icons.Default.PrivacyTip, - headlineText = stringResource(R.string.settings_terms_and_conditions), - modifier = Modifier.clickable { - openLink( - mContext, - "https://sadellie.github.io/unitto/terms", - ) - }, - ) - } - - // PRIVACY POLICY - item { - ListItem( - icon = Icons.Default.Policy, - headlineText = stringResource(R.string.settings_privacy_policy), - modifier = Modifier.clickable { - openLink( - mContext, - "https://sadellie.github.io/unitto/privacy", - ) - }, - ) - } - // OPEN SOURCE item { ListItem( From 4d96934858fbd537beb06360d69e217bf79131ef Mon Sep 17 00:00:00 2001 From: Hamish <133548095+Hamster45105@users.noreply.github.com> Date: Wed, 15 May 2024 19:29:14 +1000 Subject: [PATCH 02/14] Remove unused strings --- core/base/src/main/res/values-de/strings.xml | 3 --- core/base/src/main/res/values-en-rGB/strings.xml | 3 --- core/base/src/main/res/values-es/strings.xml | 3 --- core/base/src/main/res/values-fr/strings.xml | 3 --- core/base/src/main/res/values-hu/strings.xml | 3 --- core/base/src/main/res/values-in/strings.xml | 3 --- core/base/src/main/res/values-it/strings.xml | 3 --- core/base/src/main/res/values-nl/strings.xml | 3 --- core/base/src/main/res/values-pt-rBR/strings.xml | 3 --- core/base/src/main/res/values-ru/strings.xml | 3 --- core/base/src/main/res/values-tr/strings.xml | 3 --- core/base/src/main/res/values-zh-rCN/strings.xml | 3 --- core/base/src/main/res/values/strings.xml | 3 --- 13 files changed, 39 deletions(-) diff --git a/core/base/src/main/res/values-de/strings.xml b/core/base/src/main/res/values-de/strings.xml index 1be14927..868bd1b3 100644 --- a/core/base/src/main/res/values-de/strings.xml +++ b/core/base/src/main/res/values-de/strings.xml @@ -135,8 +135,6 @@ Maybe this can be labeled better? Let me know. It should be something that can d Umgerechnete Werte können eine höhere Präzision als eingestellt haben. %1$s (Maximum) Anzahl der Dezimalstellen - Datenschutz-Bestimmungen - Diese App bewerten Einheitengruppe umordnen Ausgewählte Farbe Stil auswählen @@ -155,7 +153,6 @@ Maybe this can be labeled better? Let me know. It should be something that can d System Systemschriftart Systemschriftart für Texte in der App nutzen - Nutzungsbedingungen Richtlinien von Drittanbietern Einstellungen Diese App übersetzen diff --git a/core/base/src/main/res/values-en-rGB/strings.xml b/core/base/src/main/res/values-en-rGB/strings.xml index 82814b62..377bd009 100644 --- a/core/base/src/main/res/values-en-rGB/strings.xml +++ b/core/base/src/main/res/values-en-rGB/strings.xml @@ -139,8 +139,6 @@ Maybe this can be labeled better? Let me know. It should be something that can d Converted values may have a precision higher than the preferred one. %1$s (Max) Number of decimal places - Privacy Policy - Rate this app Reorder unit group @@ -162,7 +160,6 @@ Maybe this can be labeled better? Let me know. It should be something that can d System System font Use system font for texts in app - Terms and Conditions Third party licenses Settings Translate this app diff --git a/core/base/src/main/res/values-es/strings.xml b/core/base/src/main/res/values-es/strings.xml index 7a57ffd3..8204bd8f 100644 --- a/core/base/src/main/res/values-es/strings.xml +++ b/core/base/src/main/res/values-es/strings.xml @@ -261,8 +261,6 @@ Maybe this can be labeled better? Let me know. It should be something that can d Los valores convertidos pueden tener una precisión superior a la preferida. %1$s (Max) Número de espacio decimales - Política de privacidad - Califica esta app Reordenar grupo de unidades @@ -284,7 +282,6 @@ Maybe this can be labeled better? Let me know. It should be something that can d Sistema Fuente del sistema Usar la fuente del sistema para los textos de la app - Términos y Condiciones Licencias de terceros Configuración Traducir esta app diff --git a/core/base/src/main/res/values-fr/strings.xml b/core/base/src/main/res/values-fr/strings.xml index e0deb991..869bceb8 100644 --- a/core/base/src/main/res/values-fr/strings.xml +++ b/core/base/src/main/res/values-fr/strings.xml @@ -123,8 +123,6 @@ Maybe this can be labeled better? Let me know. It should be something that can d Les valeurs converties peuvent avoir une précision supérieure à la précision préférée. %1$s (Max) Nombre de décimales - Politique de confidentialité - Évaluer l\'application Réorganiser le groupe d\'unités Couleur sélectionnée Style sélectionné @@ -141,7 +139,6 @@ Maybe this can be labeled better? Let me know. It should be something that can d Système - Termes et conditions Licences tierces Paramètres Traduire cette app diff --git a/core/base/src/main/res/values-hu/strings.xml b/core/base/src/main/res/values-hu/strings.xml index 7e3ba33e..0bc34ccd 100644 --- a/core/base/src/main/res/values-hu/strings.xml +++ b/core/base/src/main/res/values-hu/strings.xml @@ -71,15 +71,12 @@ Az átváltott értékek pontosabbak lehetnek, mint az elvárt értékek. %1$s (Max) Tizedesjegyek száma - Adatvédelmi Nyilatkozat - Értékeld az alkalmazást Mértékegység-csoportok átrendezése Elválasztás Csoportelválasztó szimbólum Szóköz Kezdőképernyő Az alkalmazásba belépéskor először megjelenő képernyő kiválasztása - Felhasználási Feltételek Külső licenszek Beállítások Fordítsd le ezt az appot diff --git a/core/base/src/main/res/values-in/strings.xml b/core/base/src/main/res/values-in/strings.xml index 93a45869..19108c43 100644 --- a/core/base/src/main/res/values-in/strings.xml +++ b/core/base/src/main/res/values-in/strings.xml @@ -123,8 +123,6 @@ Maybe this can be labeled better? Let me know. It should be something that can d Hasil konversi mungkin memiliki nilai ketepatan lebih tinggi dari yang diinginkan. %1$s (Maks) Jumlah bilangan desimal - Kebijakan Privasi - Nilai aplikasi ini Urutkan grup unit Warna terpilih Gaya terpilih @@ -143,7 +141,6 @@ Maybe this can be labeled better? Let me know. It should be something that can d Sistem Fon sistem Gunakan fon sistem untuk teks aplikasi - Syarat dan Ketentuan Lisensi pihak ketiga Pengaturan Terjemahkan apl ini diff --git a/core/base/src/main/res/values-it/strings.xml b/core/base/src/main/res/values-it/strings.xml index 35761e0a..450d53ef 100644 --- a/core/base/src/main/res/values-it/strings.xml +++ b/core/base/src/main/res/values-it/strings.xml @@ -193,8 +193,6 @@ Maybe this can be labeled better? Let me know. It should be something that can d Valori convertiti potrebbero avere una precisione maggiore di quella preferita. %1$s (Max) Numero di posti decimali - Politica sulla riservatezza - Valuta questa app Riordina gruppo unità @@ -216,7 +214,6 @@ Maybe this can be labeled better? Let me know. It should be something that can d Sistema Font di sistema Usa font di sistema per i testi nell\'app - Termini e condizioni Licenze terze parti Impostazioni Traduci questa app diff --git a/core/base/src/main/res/values-nl/strings.xml b/core/base/src/main/res/values-nl/strings.xml index 72b1b570..e20926e3 100644 --- a/core/base/src/main/res/values-nl/strings.xml +++ b/core/base/src/main/res/values-nl/strings.xml @@ -259,8 +259,6 @@ Maybe this can be labeled better? Let me know. It should be something that can d Geconverteerde waarden kunnen een hogere nauwkeurigheid hebben dan de voorkeurswaarde. %1$s (Maximum) Aantal decimalen - Privacybeleid - Beoordeel deze app Herschik eenheidsgroep @@ -282,7 +280,6 @@ Maybe this can be labeled better? Let me know. It should be something that can d Systeem Systeemlettertype Gebruik systeemlettertype voor tekst in de app - Voorwaarden Licenties van derden Instellingen Vertaal deze app diff --git a/core/base/src/main/res/values-pt-rBR/strings.xml b/core/base/src/main/res/values-pt-rBR/strings.xml index ee4dde35..5b7ee078 100644 --- a/core/base/src/main/res/values-pt-rBR/strings.xml +++ b/core/base/src/main/res/values-pt-rBR/strings.xml @@ -135,8 +135,6 @@ Maybe this can be labeled better? Let me know. It should be something that can d Os valores convertidos podem ter uma precisão superior à desejada. %1$s (Máximo) Número de casas decimais - Política de Privacidade - Avalie o aplicativo Reordenar grupo de unidades Cor selecionada Estilo Selecionado @@ -155,7 +153,6 @@ Maybe this can be labeled better? Let me know. It should be something that can d Sistema Fonte do sistema Usar a fonte do sistema para textos no aplicativo - Termos e Condições Licenças de terceiros Configurações Traduzir este aplicativo diff --git a/core/base/src/main/res/values-ru/strings.xml b/core/base/src/main/res/values-ru/strings.xml index 8be41dbc..51d1de47 100644 --- a/core/base/src/main/res/values-ru/strings.xml +++ b/core/base/src/main/res/values-ru/strings.xml @@ -259,8 +259,6 @@ Maybe this can be labeled better? Let me know. It should be something that can d Переводимые значения могут иметь точность выше предпочтительной. %1$s (Максимум) Количество десятичных знаков - Политика конфиденциальности - Оценить приложение Переместить группу величин @@ -282,7 +280,6 @@ Maybe this can be labeled better? Let me know. It should be something that can d Системный Системный шрифт Использовать системный шрифт для текстов в приложении - Условия и положения Лицензии третьих лиц Настройки Перевести приложение diff --git a/core/base/src/main/res/values-tr/strings.xml b/core/base/src/main/res/values-tr/strings.xml index 272adc89..e9631bdc 100644 --- a/core/base/src/main/res/values-tr/strings.xml +++ b/core/base/src/main/res/values-tr/strings.xml @@ -132,8 +132,6 @@ Maybe this can be labeled better? Let me know. It should be something that can d Dönüştürülen değerler tercih edilen değerden daha yüksek bir kesinliğe sahip olabilir. %1$s (Maks) Ondalık basamak sayısı - Gizlilik Politikası - Bu uygulamayı oyla Birim grubunu yeniden sırala Seçilen renk Seçilen stil @@ -152,7 +150,6 @@ Maybe this can be labeled better? Let me know. It should be something that can d Sistem Sistem yazı tipi Uygulamadaki metinler için sistem yazı tipini kullan - Şartlar ve Koşullar Üçüncü taraf lisansları Ayarlar Bu uygulamayı çevir diff --git a/core/base/src/main/res/values-zh-rCN/strings.xml b/core/base/src/main/res/values-zh-rCN/strings.xml index b169f607..8fa6d9fc 100644 --- a/core/base/src/main/res/values-zh-rCN/strings.xml +++ b/core/base/src/main/res/values-zh-rCN/strings.xml @@ -172,8 +172,6 @@ Maybe this can be labeled better? Let me know. It should be something that can d 转换后的值可能具有高于首选值的精度。 %1$s (大) 小数点后位数 - 隐私政策 - 评价此应用 重排序单位组 选择颜色 选择风格 @@ -184,7 +182,6 @@ Maybe this can be labeled better? Let me know. It should be something that can d 空间 启动屏幕 选择在启动应用程序时显示的屏幕 - 条款与条件 第三方许可 设置 翻译此应用 diff --git a/core/base/src/main/res/values/strings.xml b/core/base/src/main/res/values/strings.xml index b6e9246b..b5a05640 100644 --- a/core/base/src/main/res/values/strings.xml +++ b/core/base/src/main/res/values/strings.xml @@ -277,8 +277,6 @@ Maybe this can be labeled better? Let me know. It should be something that can d Converted values may have a precision higher than the preferred one. %1$s (Max) Number of decimal places - Privacy Policy - Rate this app Reorder unit group @@ -300,7 +298,6 @@ Maybe this can be labeled better? Let me know. It should be something that can d System System font Use system font for texts in app - Terms and Conditions Third party licenses Thousands separator Settings From 20694480d1d60be1f84463ebe0b1dcfad8d1dca8 Mon Sep 17 00:00:00 2001 From: Hamish <133548095+Hamster45105@users.noreply.github.com> Date: Wed, 15 May 2024 20:00:19 +1000 Subject: [PATCH 03/14] Update strings --- core/base/src/main/res/values-de/strings.xml | 2 +- core/base/src/main/res/values-en-rGB/strings.xml | 2 +- core/base/src/main/res/values-es/strings.xml | 2 +- core/base/src/main/res/values-fr/strings.xml | 2 +- core/base/src/main/res/values-hu/strings.xml | 2 +- core/base/src/main/res/values-in/strings.xml | 2 +- core/base/src/main/res/values-it/strings.xml | 2 +- core/base/src/main/res/values-nl/strings.xml | 2 +- core/base/src/main/res/values-pt-rBR/strings.xml | 2 +- core/base/src/main/res/values-ru/strings.xml | 2 +- core/base/src/main/res/values-tr/strings.xml | 2 +- core/base/src/main/res/values-zh-rCN/strings.xml | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/core/base/src/main/res/values-de/strings.xml b/core/base/src/main/res/values-de/strings.xml index 868bd1b3..589a7e72 100644 --- a/core/base/src/main/res/values-de/strings.xml +++ b/core/base/src/main/res/values-de/strings.xml @@ -83,7 +83,7 @@ Used in this dialog window. Should be short --> Zeit auswählen - Über Unitto + Über NumberHub Mehr über die App erfahren diff --git a/core/base/src/main/res/values-en-rGB/strings.xml b/core/base/src/main/res/values-en-rGB/strings.xml index 377bd009..c2d47bb6 100644 --- a/core/base/src/main/res/values-en-rGB/strings.xml +++ b/core/base/src/main/res/values-en-rGB/strings.xml @@ -83,7 +83,7 @@ Used in this dialog window. Should be short --> Select time - About Unitto + About NumberHub Learn about the app diff --git a/core/base/src/main/res/values-es/strings.xml b/core/base/src/main/res/values-es/strings.xml index 8204bd8f..833991b0 100644 --- a/core/base/src/main/res/values-es/strings.xml +++ b/core/base/src/main/res/values-es/strings.xml @@ -203,7 +203,7 @@ Used in this dialog window. Should be short --> https://s3.eu-west-1.amazonaws.com/po-pub/i/1oIHPj16krI0jyLmg4JaP2mk.png --> Item seleccionado - Acerca de Unitto + Acerca de NumberHub Más información sobre la app diff --git a/core/base/src/main/res/values-fr/strings.xml b/core/base/src/main/res/values-fr/strings.xml index 869bceb8..2db43ccd 100644 --- a/core/base/src/main/res/values-fr/strings.xml +++ b/core/base/src/main/res/values-fr/strings.xml @@ -78,7 +78,7 @@ Used in this dialog window. Should be short --> Choisir le temps - À propos d\'Unitto + À propos d\'NumberHub En savoir plus sur l\'application Additional AMOLED Noir diff --git a/core/base/src/main/res/values-hu/strings.xml b/core/base/src/main/res/values-hu/strings.xml index 0bc34ccd..6a23db65 100644 --- a/core/base/src/main/res/values-hu/strings.xml +++ b/core/base/src/main/res/values-hu/strings.xml @@ -46,7 +46,7 @@ Menü megnyitása Beállítások megnyitása Keresőgomb - Az Unitto-ról + Az NumberHub-ról Tudj meg többet az appról Továbbiak AMOLED Sötét diff --git a/core/base/src/main/res/values-in/strings.xml b/core/base/src/main/res/values-in/strings.xml index 19108c43..52260c44 100644 --- a/core/base/src/main/res/values-in/strings.xml +++ b/core/base/src/main/res/values-in/strings.xml @@ -78,7 +78,7 @@ Used in this dialog window. Should be short --> Pilih waktu - Tentang Unitto + Tentang NumberHub Pelajari tentang aplikasi Gelap AMOLED Gunakan latar hitam untuk tema gelap diff --git a/core/base/src/main/res/values-it/strings.xml b/core/base/src/main/res/values-it/strings.xml index 450d53ef..99172766 100644 --- a/core/base/src/main/res/values-it/strings.xml +++ b/core/base/src/main/res/values-it/strings.xml @@ -137,7 +137,7 @@ Used in this dialog window. Should be short --> Seleziona orario - Riguardo a Unitto + Riguardo a NumberHub Impara riguardo all\'app diff --git a/core/base/src/main/res/values-nl/strings.xml b/core/base/src/main/res/values-nl/strings.xml index e20926e3..84fde7fa 100644 --- a/core/base/src/main/res/values-nl/strings.xml +++ b/core/base/src/main/res/values-nl/strings.xml @@ -203,7 +203,7 @@ Used in this dialog window. Should be short --> https://s3.eu-west-1.amazonaws.com/po-pub/i/1oIHPj16krI0jyLmg4JaP2mk.png --> Geselecteerd item - Over Unitto + Over NumberHub Leer meer over de app diff --git a/core/base/src/main/res/values-pt-rBR/strings.xml b/core/base/src/main/res/values-pt-rBR/strings.xml index 5b7ee078..9d76ce9d 100644 --- a/core/base/src/main/res/values-pt-rBR/strings.xml +++ b/core/base/src/main/res/values-pt-rBR/strings.xml @@ -83,7 +83,7 @@ Used in this dialog window. Should be short --> Selecione o horário - Sobre o Unitto + Sobre o NumberHub Saiba mais sobre o app diff --git a/core/base/src/main/res/values-ru/strings.xml b/core/base/src/main/res/values-ru/strings.xml index 51d1de47..2ed767d5 100644 --- a/core/base/src/main/res/values-ru/strings.xml +++ b/core/base/src/main/res/values-ru/strings.xml @@ -203,7 +203,7 @@ Used in this dialog window. Should be short --> https://s3.eu-west-1.amazonaws.com/po-pub/i/1oIHPj16krI0jyLmg4JaP2mk.png --> Выбранные элемент - О Unitto + О NumberHub Узнайте больше о приложении diff --git a/core/base/src/main/res/values-tr/strings.xml b/core/base/src/main/res/values-tr/strings.xml index e9631bdc..b72f98d4 100644 --- a/core/base/src/main/res/values-tr/strings.xml +++ b/core/base/src/main/res/values-tr/strings.xml @@ -80,7 +80,7 @@ Used in this dialog window. Should be short --> Zaman seçin - Unitto hakkında + NumberHub hakkında Uygulama hakkında bilgi edinin diff --git a/core/base/src/main/res/values-zh-rCN/strings.xml b/core/base/src/main/res/values-zh-rCN/strings.xml index 8fa6d9fc..cc8c3a37 100644 --- a/core/base/src/main/res/values-zh-rCN/strings.xml +++ b/core/base/src/main/res/values-zh-rCN/strings.xml @@ -135,7 +135,7 @@ Used in this dialog window. Should be short --> https://s3.eu-west-1.amazonaws.com/po-pub/i/1oIHPj16krI0jyLmg4JaP2mk.png --> 已选定项目 - 关于 Unitto + 关于 NumberHub 了解此应用 额外的 AMOLED 黑 From b469dd03acc119b635b8921b685f74ae75cf9baf Mon Sep 17 00:00:00 2001 From: Hamish <133548095+Hamster45105@users.noreply.github.com> Date: Wed, 15 May 2024 20:02:35 +1000 Subject: [PATCH 04/14] Add contributing section --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 508c87d9..95ba8623 100644 --- a/README.md +++ b/README.md @@ -24,5 +24,10 @@ alt="Download from GitHub releases" align="center" height="80" /> Get it on Obtainium +## Contribute +To translate, update the strings in `core/base/src/main/res/LANG/strings.xml` and open a PR + +If you can help with code, open a PR + ## Help See [HELP.md](HELP.md) From dffa2d4e92b3b3ef02dbbe405065ab077347794a Mon Sep 17 00:00:00 2001 From: Myzel394 <50424412+Myzel394@users.noreply.github.com> Date: Wed, 15 May 2024 19:36:28 +0200 Subject: [PATCH 05/14] fix(docs): Improve HELP.md --- HELP.md | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/HELP.md b/HELP.md index 8a056592..982dd11d 100644 --- a/HELP.md +++ b/HELP.md @@ -2,10 +2,7 @@ ## ⌚ Add more time zones? -No. - -
-But... why? +This is not planned. Each time zone has its' own set of rules: - Offset from GMT @@ -22,38 +19,40 @@ There are 3 solutions: - Always up-to-date **❌Cons:** -- Costs money +- Extra money costs - Needs Internet, can go down, needs a caching mechanism -- Can change API and break Unitto +- The API might change and we'd need to keep it up-to-date - Needs to be translated ### 2. Create my own API service -Pros and cons are same, except this one is free cheaper (you still need to pay). +Pros and cons are same, except being a bit cheaper (you still need to pay). -### 3. Android's time zone provider (this is what Unitto uses) +### 3. Android's time zone provider (this is what NumberHub uses) read more: https://source.android.com/docs/core/permissions/timezone-rules **✅Pros:** - Almost all time zones -- Free -- No need to translate (provided by system) -- Doesn't break Unitto +- Completely for free +- No extra translations (automatically provided by the system) +- No sudden API changes - Works offline, never goes down **❌Cons:** - Less cities -- Less frequent updates (or none if you are unlucky) +- Less frequent updates
## 👩‍⚕️ Body Mass Index -Please note that the values displayed in the app are intended for entertainment purposes only. They can not replace professional medical advice. Please don't use Body Mass calculator if you are: -- Under 21 +Please note that the values displayed in the app are intended for entertainment purposes only. They can not replace professional medical advice. + +Please don't use the Body Mass calculator if you are: +- Under 21 years old - Pregnant - Diagnosed with an eating disorder Please contact your care provider for more information. ## 💵 Wrong Currency Rates? -Currency rates are updated daily. There's no real-time market monitoring in the app. \ No newline at end of file +Currency rates are updated daily. There's no real-time market monitoring on NumberHub. From d208af4f4507b88d6e01edd77f8a6dbd2d990bb2 Mon Sep 17 00:00:00 2001 From: Myzel394 <50424412+Myzel394@users.noreply.github.com> Date: Wed, 15 May 2024 19:41:30 +0200 Subject: [PATCH 06/14] fix(docs): Improve download badges --- README.md | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 95ba8623..cdfb4275 100644 --- a/README.md +++ b/README.md @@ -14,20 +14,31 @@

-## Download +# Download NumberHub - - +[Get it on Google Play](https://play.google.com/store/apps/details?id=app.myzel394.numberhub) +[Get it on GitHub](https://github.com/Myzel394/NumberHub/releases) +[Get it on Obtainium](https://apps.obtainium.imranr.dev/redirect?r=obtainium://add/https://github.com/Myzel394/NumberHub//) - - +# Support NumberHub -## Contribute -To translate, update the strings in `core/base/src/main/res/LANG/strings.xml` and open a PR +You can support NumberHub in various ways: -If you can help with code, open a PR +## Contribute to the project + +Add a new feature or fix bugs. + +## Add translations + +To add a translation, update the strings in `core/base/src/main/res/LANG/strings.xml` and open a PR + +## Donate + +It might sound crazy, but if you would just donate 1$, it would totally mean to world to me, since +it's a really small amount and if everyone did that, I can totally focus on Alibi and my other open +source projects. :) + +You can donate via [GitHub Sponsors](https://github.com/sponsors/Myzel394) or via [crypto currencies](https://github.com/Myzel394/contact-me?tab=readme-ov-file#donations). ## Help See [HELP.md](HELP.md) From 3554a99a5ee3836be33ba673b3baf7e7326532da Mon Sep 17 00:00:00 2001 From: Myzel394 <50424412+Myzel394@users.noreply.github.com> Date: Wed, 15 May 2024 19:45:53 +0200 Subject: [PATCH 07/14] docs: Add badges --- README.md | 2 +- readme_content/badge_obtainium.png | Bin 0 -> 17992 bytes readme_content/github-badge.png | Bin 0 -> 30518 bytes readme_content/google-play-badge.png | Bin 0 -> 4904 bytes 4 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 readme_content/badge_obtainium.png create mode 100644 readme_content/github-badge.png create mode 100644 readme_content/google-play-badge.png diff --git a/README.md b/README.md index cdfb4275..dab90510 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ # Download NumberHub [Get it on Google Play](https://play.google.com/store/apps/details?id=app.myzel394.numberhub) -[Get it on GitHub](https://github.com/Myzel394/NumberHub/releases) +[Get it on GitHub](https://github.com/Myzel394/NumberHub/releases) [Get it on Obtainium](https://apps.obtainium.imranr.dev/redirect?r=obtainium://add/https://github.com/Myzel394/NumberHub//) # Support NumberHub diff --git a/readme_content/badge_obtainium.png b/readme_content/badge_obtainium.png new file mode 100644 index 0000000000000000000000000000000000000000..a4cf4f9cac89dc2c40b067ff13ab88275f94f271 GIT binary patch literal 17992 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≻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 literal 0 HcmV?d00001 diff --git a/readme_content/github-badge.png b/readme_content/github-badge.png new file mode 100644 index 0000000000000000000000000000000000000000..af8a0f5b872503888c91091f37b32200ff2eb3c8 GIT binary patch literal 30518 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

d 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 literal 0 HcmV?d00001 From f7ec54039bb43a9bda73abeb006634b3f15a96b7 Mon Sep 17 00:00:00 2001 From: Myzel394 <50424412+Myzel394@users.noreply.github.com> Date: Wed, 15 May 2024 19:55:38 +0200 Subject: [PATCH 08/14] docs: Add privacy policy --- PRIVACY.md | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 PRIVACY.md diff --git a/PRIVACY.md b/PRIVACY.md new file mode 100644 index 00000000..8f842927 --- /dev/null +++ b/PRIVACY.md @@ -0,0 +1,45 @@ +**Privacy Policy** + +This privacy policy applies to the NumberHub app (hereby referred to as "Application") for mobile devices that was created by Myzel394 (hereby referred to as "Service Provider") as an Open Source service. This service is intended for use "AS IS". + +**Third Party Access** + +The service uses external services to fetch data for the user. The Service Provider does not have control over the data that is fetched from these services. + +The Service Provider may disclose User Provided and Automatically Collected Information: + +* as required by law, such as to comply with a subpoena, or similar legal process; +* when they believe in good faith that disclosure is necessary to protect their rights, protect your safety or the safety of others, investigate fraud, or respond to a government request; +* with their trusted services providers who work on their behalf, do not have an independent use of the information we disclose to them, and have agreed to adhere to the rules set forth in this privacy statement. + +**Opt-Out Rights** + +You can stop all collection of information by the Application easily by uninstalling it. You may use the standard uninstall processes as may be available as part of your mobile device or via the mobile application marketplace or network. + +**Children** + +The Service Provider does not use the Application to knowingly solicit data from or market to children under the age of 13. + +The Service Provider does not knowingly collect personally identifiable information from children. The Service Provider encourages all children to never submit any personally identifiable information through the Application and/or Services. The Service Provider encourage parents and legal guardians to monitor their children's Internet usage and to help enforce this Policy by instructing their children never to provide personally identifiable information through the Application and/or Services without their permission. If you have reason to believe that a child has provided personally identifiable information to the Service Provider through the Application and/or Services, please contact the Service Provider (google-play.29k1a@aleeas.com) so that they will be able to take the necessary actions. You must also be at least 16 years of age to consent to the processing of your personally identifiable information in your country (in some countries we may allow your parent or guardian to do so on your behalf). + +**Security** + +The Service Provider is concerned about safeguarding the confidentiality of your information. The Service Provider provides physical, electronic, and procedural safeguards to protect information the Service Provider processes and maintains. + +**Changes** + +This Privacy Policy may be updated from time to time for any reason. The Service Provider will notify you of any changes to the Privacy Policy by updating this page with the new Privacy Policy. You are advised to consult this Privacy Policy regularly for any changes, as continued use is deemed approval of all changes. + +This privacy policy is effective as of 2024-05-15 + +**Your Consent** + +By using the Application, you are consenting to the processing of your information as set forth in this Privacy Policy now and as amended by us. + +**Contact Us** + +If you have any questions regarding privacy while using the Application, or have questions about the practices, please contact the Service Provider via email at google-play.29k1a@aleeas.com. + +* * * + +This privacy policy page was generated by [App Privacy Policy Generator](https://app-privacy-policy-generator.nisrulz.com/) From cacee0a19067799c5417be3fb615c9d68007b999 Mon Sep 17 00:00:00 2001 From: Myzel394 <50424412+Myzel394@users.noreply.github.com> Date: Wed, 15 May 2024 19:55:45 +0200 Subject: [PATCH 09/14] docs: Improve SECURITY.md --- SECURITY.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/SECURITY.md b/SECURITY.md index 8952d1f2..e976848b 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,4 +1,4 @@ -### `com.sadellie.unitto.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION` +### `com.sadellie.numberhub.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION` Read (boring): https://developer.android.com/about/versions/14/behavior-changes-14#runtime-receivers-exported @@ -24,6 +24,7 @@ Not used explicitly. Added automatically by Widget feature. ### Non-free network service -Non-free doesn't mean that you need to pay, put your credit card away. In this context it means that you can't host it on your machine (why would anyone want to host a currency API service?). +Non-free means that you can't host the given service on your machine. + +The app uses [Free Currency Rates API by fawazahmed0](https://github.com/fawazahmed0/exchange-api). Requests are send to `cdn.jsdelivr.net`. -The app uses [Free Currency Rates API by fawazahmed0](https://github.com/fawazahmed0/exchange-api). Requests are send to `cdn.jsdelivr.net`. \ No newline at end of file From b13876dcdd32f7fb15e2ec9360637acba07ca24e Mon Sep 17 00:00:00 2001 From: Myzel394 <50424412+Myzel394@users.noreply.github.com> Date: Wed, 15 May 2024 19:56:53 +0200 Subject: [PATCH 10/14] Revert "Remove unused strings" This reverts commit 4d96934858fbd537beb06360d69e217bf79131ef. --- core/base/src/main/res/values-de/strings.xml | 3 +++ core/base/src/main/res/values-en-rGB/strings.xml | 3 +++ core/base/src/main/res/values-es/strings.xml | 3 +++ core/base/src/main/res/values-fr/strings.xml | 3 +++ core/base/src/main/res/values-hu/strings.xml | 3 +++ core/base/src/main/res/values-in/strings.xml | 3 +++ core/base/src/main/res/values-it/strings.xml | 3 +++ core/base/src/main/res/values-nl/strings.xml | 3 +++ core/base/src/main/res/values-pt-rBR/strings.xml | 3 +++ core/base/src/main/res/values-ru/strings.xml | 3 +++ core/base/src/main/res/values-tr/strings.xml | 3 +++ core/base/src/main/res/values-zh-rCN/strings.xml | 3 +++ core/base/src/main/res/values/strings.xml | 3 +++ 13 files changed, 39 insertions(+) diff --git a/core/base/src/main/res/values-de/strings.xml b/core/base/src/main/res/values-de/strings.xml index 589a7e72..916264db 100644 --- a/core/base/src/main/res/values-de/strings.xml +++ b/core/base/src/main/res/values-de/strings.xml @@ -135,6 +135,8 @@ Maybe this can be labeled better? Let me know. It should be something that can d Umgerechnete Werte können eine höhere Präzision als eingestellt haben. %1$s (Maximum) Anzahl der Dezimalstellen + Datenschutz-Bestimmungen + Diese App bewerten Einheitengruppe umordnen Ausgewählte Farbe Stil auswählen @@ -153,6 +155,7 @@ Maybe this can be labeled better? Let me know. It should be something that can d System Systemschriftart Systemschriftart für Texte in der App nutzen + Nutzungsbedingungen Richtlinien von Drittanbietern Einstellungen Diese App übersetzen diff --git a/core/base/src/main/res/values-en-rGB/strings.xml b/core/base/src/main/res/values-en-rGB/strings.xml index c2d47bb6..3cec0d29 100644 --- a/core/base/src/main/res/values-en-rGB/strings.xml +++ b/core/base/src/main/res/values-en-rGB/strings.xml @@ -139,6 +139,8 @@ Maybe this can be labeled better? Let me know. It should be something that can d Converted values may have a precision higher than the preferred one. %1$s (Max) Number of decimal places + Privacy Policy + Rate this app Reorder unit group @@ -160,6 +162,7 @@ Maybe this can be labeled better? Let me know. It should be something that can d System System font Use system font for texts in app + Terms and Conditions Third party licenses Settings Translate this app diff --git a/core/base/src/main/res/values-es/strings.xml b/core/base/src/main/res/values-es/strings.xml index 833991b0..a3229711 100644 --- a/core/base/src/main/res/values-es/strings.xml +++ b/core/base/src/main/res/values-es/strings.xml @@ -261,6 +261,8 @@ Maybe this can be labeled better? Let me know. It should be something that can d Los valores convertidos pueden tener una precisión superior a la preferida. %1$s (Max) Número de espacio decimales + Política de privacidad + Califica esta app Reordenar grupo de unidades @@ -282,6 +284,7 @@ Maybe this can be labeled better? Let me know. It should be something that can d Sistema Fuente del sistema Usar la fuente del sistema para los textos de la app + Términos y Condiciones Licencias de terceros Configuración Traducir esta app diff --git a/core/base/src/main/res/values-fr/strings.xml b/core/base/src/main/res/values-fr/strings.xml index 2db43ccd..436b4d4e 100644 --- a/core/base/src/main/res/values-fr/strings.xml +++ b/core/base/src/main/res/values-fr/strings.xml @@ -123,6 +123,8 @@ Maybe this can be labeled better? Let me know. It should be something that can d Les valeurs converties peuvent avoir une précision supérieure à la précision préférée. %1$s (Max) Nombre de décimales + Politique de confidentialité + Évaluer l\'application Réorganiser le groupe d\'unités Couleur sélectionnée Style sélectionné @@ -139,6 +141,7 @@ Maybe this can be labeled better? Let me know. It should be something that can d Système + Termes et conditions Licences tierces Paramètres Traduire cette app diff --git a/core/base/src/main/res/values-hu/strings.xml b/core/base/src/main/res/values-hu/strings.xml index 6a23db65..57383504 100644 --- a/core/base/src/main/res/values-hu/strings.xml +++ b/core/base/src/main/res/values-hu/strings.xml @@ -71,12 +71,15 @@ Az átváltott értékek pontosabbak lehetnek, mint az elvárt értékek. %1$s (Max) Tizedesjegyek száma + Adatvédelmi Nyilatkozat + Értékeld az alkalmazást Mértékegység-csoportok átrendezése Elválasztás Csoportelválasztó szimbólum Szóköz Kezdőképernyő Az alkalmazásba belépéskor először megjelenő képernyő kiválasztása + Felhasználási Feltételek Külső licenszek Beállítások Fordítsd le ezt az appot diff --git a/core/base/src/main/res/values-in/strings.xml b/core/base/src/main/res/values-in/strings.xml index 52260c44..473eb7cd 100644 --- a/core/base/src/main/res/values-in/strings.xml +++ b/core/base/src/main/res/values-in/strings.xml @@ -123,6 +123,8 @@ Maybe this can be labeled better? Let me know. It should be something that can d Hasil konversi mungkin memiliki nilai ketepatan lebih tinggi dari yang diinginkan. %1$s (Maks) Jumlah bilangan desimal + Kebijakan Privasi + Nilai aplikasi ini Urutkan grup unit Warna terpilih Gaya terpilih @@ -141,6 +143,7 @@ Maybe this can be labeled better? Let me know. It should be something that can d Sistem Fon sistem Gunakan fon sistem untuk teks aplikasi + Syarat dan Ketentuan Lisensi pihak ketiga Pengaturan Terjemahkan apl ini diff --git a/core/base/src/main/res/values-it/strings.xml b/core/base/src/main/res/values-it/strings.xml index 99172766..16de3587 100644 --- a/core/base/src/main/res/values-it/strings.xml +++ b/core/base/src/main/res/values-it/strings.xml @@ -193,6 +193,8 @@ Maybe this can be labeled better? Let me know. It should be something that can d Valori convertiti potrebbero avere una precisione maggiore di quella preferita. %1$s (Max) Numero di posti decimali + Politica sulla riservatezza + Valuta questa app Riordina gruppo unità @@ -214,6 +216,7 @@ Maybe this can be labeled better? Let me know. It should be something that can d Sistema Font di sistema Usa font di sistema per i testi nell\'app + Termini e condizioni Licenze terze parti Impostazioni Traduci questa app diff --git a/core/base/src/main/res/values-nl/strings.xml b/core/base/src/main/res/values-nl/strings.xml index 84fde7fa..0f993134 100644 --- a/core/base/src/main/res/values-nl/strings.xml +++ b/core/base/src/main/res/values-nl/strings.xml @@ -259,6 +259,8 @@ Maybe this can be labeled better? Let me know. It should be something that can d Geconverteerde waarden kunnen een hogere nauwkeurigheid hebben dan de voorkeurswaarde. %1$s (Maximum) Aantal decimalen + Privacybeleid + Beoordeel deze app Herschik eenheidsgroep @@ -280,6 +282,7 @@ Maybe this can be labeled better? Let me know. It should be something that can d Systeem Systeemlettertype Gebruik systeemlettertype voor tekst in de app + Voorwaarden Licenties van derden Instellingen Vertaal deze app diff --git a/core/base/src/main/res/values-pt-rBR/strings.xml b/core/base/src/main/res/values-pt-rBR/strings.xml index 9d76ce9d..b246f724 100644 --- a/core/base/src/main/res/values-pt-rBR/strings.xml +++ b/core/base/src/main/res/values-pt-rBR/strings.xml @@ -135,6 +135,8 @@ Maybe this can be labeled better? Let me know. It should be something that can d Os valores convertidos podem ter uma precisão superior à desejada. %1$s (Máximo) Número de casas decimais + Política de Privacidade + Avalie o aplicativo Reordenar grupo de unidades Cor selecionada Estilo Selecionado @@ -153,6 +155,7 @@ Maybe this can be labeled better? Let me know. It should be something that can d Sistema Fonte do sistema Usar a fonte do sistema para textos no aplicativo + Termos e Condições Licenças de terceiros Configurações Traduzir este aplicativo diff --git a/core/base/src/main/res/values-ru/strings.xml b/core/base/src/main/res/values-ru/strings.xml index 2ed767d5..2f39e4ae 100644 --- a/core/base/src/main/res/values-ru/strings.xml +++ b/core/base/src/main/res/values-ru/strings.xml @@ -259,6 +259,8 @@ Maybe this can be labeled better? Let me know. It should be something that can d Переводимые значения могут иметь точность выше предпочтительной. %1$s (Максимум) Количество десятичных знаков + Политика конфиденциальности + Оценить приложение Переместить группу величин @@ -280,6 +282,7 @@ Maybe this can be labeled better? Let me know. It should be something that can d Системный Системный шрифт Использовать системный шрифт для текстов в приложении + Условия и положения Лицензии третьих лиц Настройки Перевести приложение diff --git a/core/base/src/main/res/values-tr/strings.xml b/core/base/src/main/res/values-tr/strings.xml index b72f98d4..91cfb50b 100644 --- a/core/base/src/main/res/values-tr/strings.xml +++ b/core/base/src/main/res/values-tr/strings.xml @@ -132,6 +132,8 @@ Maybe this can be labeled better? Let me know. It should be something that can d Dönüştürülen değerler tercih edilen değerden daha yüksek bir kesinliğe sahip olabilir. %1$s (Maks) Ondalık basamak sayısı + Gizlilik Politikası + Bu uygulamayı oyla Birim grubunu yeniden sırala Seçilen renk Seçilen stil @@ -150,6 +152,7 @@ Maybe this can be labeled better? Let me know. It should be something that can d Sistem Sistem yazı tipi Uygulamadaki metinler için sistem yazı tipini kullan + Şartlar ve Koşullar Üçüncü taraf lisansları Ayarlar Bu uygulamayı çevir diff --git a/core/base/src/main/res/values-zh-rCN/strings.xml b/core/base/src/main/res/values-zh-rCN/strings.xml index cc8c3a37..3e3ad88a 100644 --- a/core/base/src/main/res/values-zh-rCN/strings.xml +++ b/core/base/src/main/res/values-zh-rCN/strings.xml @@ -172,6 +172,8 @@ Maybe this can be labeled better? Let me know. It should be something that can d 转换后的值可能具有高于首选值的精度。 %1$s (大) 小数点后位数 + 隐私政策 + 评价此应用 重排序单位组 选择颜色 选择风格 @@ -182,6 +184,7 @@ Maybe this can be labeled better? Let me know. It should be something that can d 空间 启动屏幕 选择在启动应用程序时显示的屏幕 + 条款与条件 第三方许可 设置 翻译此应用 diff --git a/core/base/src/main/res/values/strings.xml b/core/base/src/main/res/values/strings.xml index b5a05640..b6e9246b 100644 --- a/core/base/src/main/res/values/strings.xml +++ b/core/base/src/main/res/values/strings.xml @@ -277,6 +277,8 @@ Maybe this can be labeled better? Let me know. It should be something that can d Converted values may have a precision higher than the preferred one. %1$s (Max) Number of decimal places + Privacy Policy + Rate this app Reorder unit group @@ -298,6 +300,7 @@ Maybe this can be labeled better? Let me know. It should be something that can d System System font Use system font for texts in app + Terms and Conditions Third party licenses Thousands separator Settings From f3e31da67c6c96b9f1c0c671c4858576d701aa48 Mon Sep 17 00:00:00 2001 From: Myzel394 <50424412+Myzel394@users.noreply.github.com> Date: Wed, 15 May 2024 20:01:44 +0200 Subject: [PATCH 11/14] fix: Undo unwanted changes --- .../feature/settings/SettingsScreen.kt | 8 ++++++ .../feature/settings/about/AboutScreen.kt | 28 +++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/feature/settings/src/main/java/app/myzel394/numberhub/feature/settings/SettingsScreen.kt b/feature/settings/src/main/java/app/myzel394/numberhub/feature/settings/SettingsScreen.kt index f5432ca8..d1967982 100644 --- a/feature/settings/src/main/java/app/myzel394/numberhub/feature/settings/SettingsScreen.kt +++ b/feature/settings/src/main/java/app/myzel394/numberhub/feature/settings/SettingsScreen.kt @@ -329,6 +329,14 @@ private fun SettingsScreen( ) } + if (BuildConfig.STORE_LINK.isNotEmpty()) { + ListItem( + icon = Icons.Default.RateReview, + headlineText = stringResource(R.string.settings_rate_this_app), + modifier = Modifier.clickable { openLink(mContext, BuildConfig.STORE_LINK) }, + ) + } + ListItem( icon = Icons.Default.Info, headlineText = stringResource(R.string.settings_about_unitto), diff --git a/feature/settings/src/main/java/app/myzel394/numberhub/feature/settings/about/AboutScreen.kt b/feature/settings/src/main/java/app/myzel394/numberhub/feature/settings/about/AboutScreen.kt index 7a479ed2..ee8c830b 100644 --- a/feature/settings/src/main/java/app/myzel394/numberhub/feature/settings/about/AboutScreen.kt +++ b/feature/settings/src/main/java/app/myzel394/numberhub/feature/settings/about/AboutScreen.kt @@ -85,6 +85,34 @@ private fun AboutScreen( ) } + // TERMS AND CONDITIONS + // item { + // ListItem( + // icon = Icons.Default.PrivacyTip, + // headlineText = stringResource(R.string.settings_terms_and_conditions), + // modifier = Modifier.clickable { + // openLink( + // mContext, + // "https://sadellie.github.io/unitto/terms", + // ) + // }, + // ) + // } + + // PRIVACY POLICY + item { + ListItem( + icon = Icons.Default.Policy, + headlineText = stringResource(R.string.settings_privacy_policy), + modifier = Modifier.clickable { + openLink( + mContext, + "https://github.com/Myzel394/NumberHub/blob/master/PRIVACY.md", + ) + }, + ) + } + // OPEN SOURCE item { ListItem( From 6a289a8d7fab55e320507d4e5fd94ab1139045e6 Mon Sep 17 00:00:00 2001 From: Myzel394 <50424412+Myzel394@users.noreply.github.com> Date: Wed, 15 May 2024 21:21:21 +0200 Subject: [PATCH 12/14] fix: Improve debug app name --- app/src/debug/AndroidManifest.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/debug/AndroidManifest.xml b/app/src/debug/AndroidManifest.xml index a6e59d38..a4d5f5d8 100644 --- a/app/src/debug/AndroidManifest.xml +++ b/app/src/debug/AndroidManifest.xml @@ -20,7 +20,7 @@ xmlns:tools="http://schemas.android.com/tools"> From 98b6a4ceb4d3cf45d3be4e2b69f5d2bc44bf328c Mon Sep 17 00:00:00 2001 From: Myzel394 <50424412+Myzel394@users.noreply.github.com> Date: Wed, 15 May 2024 21:31:59 +0200 Subject: [PATCH 13/14] docs: Fix name --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index dab90510..ba4fa1c4 100644 --- a/README.md +++ b/README.md @@ -35,10 +35,11 @@ To add a translation, update the strings in `core/base/src/main/res/LANG/strings ## Donate It might sound crazy, but if you would just donate 1$, it would totally mean to world to me, since -it's a really small amount and if everyone did that, I can totally focus on Alibi and my other open -source projects. :) +it's a really small amount and if everyone did that, I can totally focus on NumberHub +and my other open source projects. :) -You can donate via [GitHub Sponsors](https://github.com/sponsors/Myzel394) or via [crypto currencies](https://github.com/Myzel394/contact-me?tab=readme-ov-file#donations). +You can donate via [GitHub Sponsors](https://github.com/sponsors/Myzel394) +or via [crypto currencies](https://github.com/Myzel394/contact-me?tab=readme-ov-file#donations). ## Help See [HELP.md](HELP.md) From 6a820be4412e03a3855cb2ada7c514716467bafa Mon Sep 17 00:00:00 2001 From: Myzel394 <50424412+Myzel394@users.noreply.github.com> Date: Wed, 15 May 2024 22:07:46 +0200 Subject: [PATCH 14/14] docs: Improvements --- .../android/en-US/full_description.txt | 23 ------------------- .../android/en-US/short_description.txt | 2 +- logo.svg | 15 ++++++++++++ 3 files changed, 16 insertions(+), 24 deletions(-) create mode 100644 logo.svg diff --git a/fastlane/metadata/android/en-US/full_description.txt b/fastlane/metadata/android/en-US/full_description.txt index c718a6d3..a42642b4 100644 --- a/fastlane/metadata/android/en-US/full_description.txt +++ b/fastlane/metadata/android/en-US/full_description.txt @@ -29,28 +29,5 @@ Look for Calculator on your home screen after installing the app. • Add to favorites • Add labels to time zones -Permissions - -app.myzel394.numberhub.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION -Read (boring): https://developer.android.com/about/versions/14/behavior-changes-14#runtime-receivers-exported - -android.permission.INTERNET -Used in Unit Converter to update currency rates. Requests are made only when you select a currency unit. - -android.permission.ACCESS_NETWORK_STATE -Used in Unit Converter as a callback. Retries to update currency rates if there was an error (no network, for example) and the Internet connection is back. - -android.permission.WAKE_LOCK -Not used explicitly. Added automatically by Widget feature. - -android.permission.RECEIVE_BOOT_COMPLETED -Not used explicitly. Added automatically by Widget feature. - -android.permission.FOREGROUND_SERVICE -Not used explicitly. Added automatically by Widget feature. - -Non-free network service -Non-free doesn't mean that you need to pay, put your credit card away. In this context it means that you can't host it on your machine. - The app uses https://github.com/fawazahmed0/currency-api by https://github.com/fawazahmed0 Requests are send to cdn.jsdelivr.net. diff --git a/fastlane/metadata/android/en-US/short_description.txt b/fastlane/metadata/android/en-US/short_description.txt index 106e6f02..f0e89683 100644 --- a/fastlane/metadata/android/en-US/short_description.txt +++ b/fastlane/metadata/android/en-US/short_description.txt @@ -1 +1 @@ -Calculator, converter and more \ No newline at end of file +Your Hub for ✖️ Math / 💲 Currency rates / 📆 Date calculations / ⌚ Time zones... \ No newline at end of file diff --git a/logo.svg b/logo.svg new file mode 100644 index 00000000..cd072c29 --- /dev/null +++ b/logo.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + +