Compare commits

..

38 Commits

Author SHA1 Message Date
a0339e3c19 chore: merge dev to main (#1077) 2023-08-03 05:24:25 +03:00
9cfa274d81 build: bump version to v1.5.1 2023-08-03 05:23:47 +03:00
8c79f5e371 build: bump patcher to v12.1.0 2023-08-03 05:23:16 +03:00
0d716513d7 fix: keystore password dialog showing up before importing (#1068) 2023-08-03 08:36:39 +07:00
08f6724060 chore: merge dev branch to main branch (#1060) 2023-08-03 02:20:24 +03:00
29daf51e64 build: bump version to 2023-08-03 02:19:14 +03:00
b3b2b01c0f ci(build): use pr event trigger for now
I just heard of cache eviction policy :)
2023-08-01 20:20:27 +07:00
c3212d0308 ci(build): update event trigger
Run on every PR

Run on every Push, ignore main branch, and ignore tag
2023-08-01 19:32:52 +07:00
aaa114ba13 ci(pr-build): reinstate functionality
PR Build was never use because it have to be manually trigger
2023-08-01 19:26:26 +07:00
8ca6418630 refactor(settings): improve clarity of the warning dialogs (#1058) 2023-07-31 21:53:23 +07:00
95632b7f55 chore(deps): update revanced-patcher to v12.0.0 2023-07-30 11:49:01 +07:00
64744b2abf fix: original.apk not found despite existing (#1052) 2023-07-30 10:35:34 +07:00
096b315701 fix(patch-item): remove redundant patch version completely (#1059)
https://github.com/ReVanced/revanced-patches/pull/2709
2023-07-29 16:21:30 +07:00
c27ca08d3a docs: leftovers from 6495687841524cd82ab65990c9c44d53d377db6e 2023-07-29 16:08:54 +07:00
0011222371 chore:fix incorrect version 2023-07-23 14:25:11 +05:30
29db947e25 fix: using non const value in a const variable 2023-07-23 14:04:35 +05:30
fd43ac7581 chore: merge dev branch to main branch (#1032) 2023-07-23 13:53:25 +05:30
e49c19b3cd feat: support older version of android for reddit client patches 2023-07-23 13:51:36 +05:30
Pun
06f0e59967 chore(deps): update libsu to v5.2.0 2023-07-22 13:21:13 +07:00
Pun
c5fc5ee93b build: speed up compilation time
faster build faster build faster build faster build faster build
2023-07-19 18:30:50 +07:00
159c85bd1f fix: close previous dialog when user reset the API URL (#1025) 2023-07-16 21:04:35 +07:00
Pun
2460acf0f4 ci(analyze): don't run when PR is in draft 2023-07-16 17:10:29 +07:00
Pun
6495687841 docs: correct misspelling (EN_US)
This correct spelling to English American, because by default, we use English US.
2023-07-16 16:31:08 +07:00
Pun
d229ccb36c ci(analyze): clarify job name that the job do static analysis & format checking 2023-07-16 16:21:16 +07:00
Pun
4d6a57ddcf ci(analyze): restore run when commit push to dev branch 2023-07-16 16:17:15 +07:00
d161d55aaf fix: patched applications not showing at launch (#1031) 2023-07-16 12:46:01 +07:00
Pun
768ad0c9bc chore: merge dev branch to main branch (#1011)
ReVanced Manager v1.4.1
2023-07-15 20:33:30 +07:00
29323d4e20 build: update app version to v1.4.1 2023-07-15 12:55:59 +07:00
630b22e193 refactor: applies changes from formatter & linter 2023-07-15 12:41:03 +07:00
79116f9e67 fix(patched-applications): non-patched app showing on Installed section (#1022) 2023-07-15 08:11:51 +07:00
eb58475259 fix: showing Installed when it's actually not (#1021) 2023-07-15 08:10:36 +07:00
a879ac30fb fix: prevent unsupported operation exception (#1018) 2023-07-14 17:55:04 +07:00
c5b0621323 fix(navigation-view): back button closing the app from any page (#1019) 2023-07-13 19:25:48 +05:45
0462815014 fix(app-selector): fix text overflow on small screen (#1017) 2023-07-13 00:16:53 +05:45
e64318c947 fix(app-selector): fix text overflow on small screen 2023-07-13 00:14:47 +05:45
b784482788 chore: update libsu to 5.1.0
This should fixes some issues with root
2023-07-11 19:28:59 +07:00
2834e8b348 fix: patchable apps not showing if none of them is installed (#1009) 2023-07-11 17:11:45 +07:00
b23dfd4289 chore: merge dev branch to main branch (#1010) 2023-07-11 01:24:54 +05:30
60 changed files with 328 additions and 297 deletions

View File

@ -1,14 +1,25 @@
name: Analyze Code name: Analyze Code
on: on:
push:
branches: [ "dev" ]
paths:
- "**.dart"
- ".github/workflows/analyze.yml"
pull_request: pull_request:
branches: [ "main", "dev" ] branches: [ "main", "dev" ]
types:
- opened
- reopened
- synchronize
- ready_for_review
paths: paths:
- "**.dart" - "**.dart"
- ".github/workflows/analyze.yml" - ".github/workflows/analyze.yml"
jobs: jobs:
build: build:
name: "Static analysis & format check"
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3

View File

@ -1,7 +1,7 @@
name: PR Build name: PR Build
on: on:
workflow_dispatch: pull_request:
jobs: jobs:
build: build:

View File

@ -71,7 +71,7 @@ dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
// ReVanced // ReVanced
implementation "app.revanced:revanced-patcher:11.0.4" implementation "app.revanced:revanced-patcher:12.1.0"
// Signing & aligning // Signing & aligning
implementation("org.bouncycastle:bcpkix-jdk15on:1.70") implementation("org.bouncycastle:bcpkix-jdk15on:1.70")

View File

@ -2,23 +2,29 @@
package="app.revanced.manager.flutter"> package="app.revanced.manager.flutter">
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/> <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" /> <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" /> <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" /> <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" /> <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" /> <uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />
<uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
<application <application
android:label="ReVanced Manager" android:label="ReVanced Manager"
android:name="${applicationName}" android:name="${applicationName}"
android:icon="@mipmap/ic_launcher" android:icon="@mipmap/ic_launcher"
android:largeHeap="true" android:largeHeap="true"
android:requestLegacyExternalStorage="true"
android:extractNativeLibs="true" android:extractNativeLibs="true"
android:enableOnBackInvokedCallback="true"> android:enableOnBackInvokedCallback="true">
<activity <activity

View File

@ -1,3 +1,6 @@
org.gradle.jvmargs=-Xmx1536M org.gradle.jvmargs=-Xmx1536M -XX:+UseParallelGC
org.gradle.parallel=true
org.gradle.daemon=true
org.gradle.caching=true
android.useAndroidX=true android.useAndroidX=true
android.enableJetifier=true android.enableJetifier=true

View File

@ -147,9 +147,9 @@
"sentryLabel": "تسجيل الحراسة", "sentryLabel": "تسجيل الحراسة",
"sentryHint": "إرسال سجلات مجهولة لمساعدتنا في تحسين ReVanced Manager", "sentryHint": "إرسال سجلات مجهولة لمساعدتنا في تحسين ReVanced Manager",
"restartAppForChanges": "إعادة تشغيل التطبيق لتطبيق التغييرات", "restartAppForChanges": "إعادة تشغيل التطبيق لتطبيق التغييرات",
"deleteKeystoreLabel": "حذف ملف تخزين المفاتيح", "regenerateKeystoreLabel": "حذف ملف تخزين المفاتيح",
"deleteKeystoreHint": "حذف ملف تخزين المفاتيح المستخدم للتوقيع على التطبيق", "regenerateKeystoreHint": "حذف ملف تخزين المفاتيح المستخدم للتوقيع على التطبيق",
"deletedKeystore": "تم حذف مِلَفّ تخزين المفاتيح", "regeneratedKeystore": "تم حذف مِلَفّ تخزين المفاتيح",
"deleteTempDirLabel": "حذف الملفات المؤقتة", "deleteTempDirLabel": "حذف الملفات المؤقتة",
"deleteTempDirHint": "حذف الملفات المؤقتة غير المستخدمة", "deleteTempDirHint": "حذف الملفات المؤقتة غير المستخدمة",
"deletedTempDir": "تم حذف الملفات المؤقتة", "deletedTempDir": "تم حذف الملفات المؤقتة",

View File

@ -143,9 +143,9 @@
"sentryLabel": "Keşikçi jurnalı", "sentryLabel": "Keşikçi jurnalı",
"sentryHint": "ReVanced Manager-i inkişaf etdirməyimizə kömək etməsi üçün anonim jurnallar göndərin", "sentryHint": "ReVanced Manager-i inkişaf etdirməyimizə kömək etməsi üçün anonim jurnallar göndərin",
"restartAppForChanges": "Dəyişiklikləri tətbiq etmək üçün tətbiqi yenidən başlat", "restartAppForChanges": "Dəyişiklikləri tətbiq etmək üçün tətbiqi yenidən başlat",
"deleteKeystoreLabel": "Keystore-u sil", "regenerateKeystoreLabel": "Keystore-u sil",
"deleteKeystoreHint": "Tətbiqi imzalamaq üçün istifadə edilən keystoru-u sil", "regenerateKeystoreHint": "Tətbiqi imzalamaq üçün istifadə edilən keystoru-u sil",
"deletedKeystore": "Keystore silindi", "regeneratedKeystore": "Keystore silindi",
"deleteTempDirLabel": "Müvəqqəti faylları sil", "deleteTempDirLabel": "Müvəqqəti faylları sil",
"deleteTempDirHint": "İstifadə edilməyən müvəqqəti faylları sil", "deleteTempDirHint": "İstifadə edilməyən müvəqqəti faylları sil",
"deletedTempDir": "Müvəqqəti fayllar silindi", "deletedTempDir": "Müvəqqəti fayllar silindi",

View File

@ -147,9 +147,9 @@
"sentryLabel": "Sentry логване", "sentryLabel": "Sentry логване",
"sentryHint": "Пращайте анонимни логове за да ни помогнете да подобрим ReVanced Manager", "sentryHint": "Пращайте анонимни логове за да ни помогнете да подобрим ReVanced Manager",
"restartAppForChanges": "Рестартирайте приложението, за да се приложат промените", "restartAppForChanges": "Рестартирайте приложението, за да се приложат промените",
"deleteKeystoreLabel": "Изтриване на keystore", "regenerateKeystoreLabel": "Изтриване на keystore",
"deleteKeystoreHint": "Изтриване на keystore използван за подписване на приложението", "regenerateKeystoreHint": "Изтриване на keystore използван за подписване на приложението",
"deletedKeystore": "Keystore изтрит", "regeneratedKeystore": "Keystore изтрит",
"deleteTempDirLabel": "Изтриване на временни файлове", "deleteTempDirLabel": "Изтриване на временни файлове",
"deleteTempDirHint": "Изтриване на неизползвани временни файлове", "deleteTempDirHint": "Изтриване на неизползвани временни файлове",
"deletedTempDir": "Временните файлове са изтрити", "deletedTempDir": "Временните файлове са изтрити",

View File

@ -143,9 +143,9 @@
"sentryLabel": "সেন্ট্রি লগিং", "sentryLabel": "সেন্ট্রি লগিং",
"sentryHint": "ReVanced Manager উন্নত করতে আমাদের সাহায্য করতে বেনামী লগ পাঠান", "sentryHint": "ReVanced Manager উন্নত করতে আমাদের সাহায্য করতে বেনামী লগ পাঠান",
"restartAppForChanges": "পরিবর্তনগুলি প্রয়োগ করতে অ্যাপটি পুনরায় চালু করুন", "restartAppForChanges": "পরিবর্তনগুলি প্রয়োগ করতে অ্যাপটি পুনরায় চালু করুন",
"deleteKeystoreLabel": "কীস্টোর মুছুন", "regenerateKeystoreLabel": "কীস্টোর মুছুন",
"deleteKeystoreHint": "প্যাচড অ্যাপ সাইন করতে ব্যবহৃত কীস্টোরটি মুছুন", "regenerateKeystoreHint": "প্যাচড অ্যাপ সাইন করতে ব্যবহৃত কীস্টোরটি মুছুন",
"deletedKeystore": "কীস্টোর মুছে ফেলা হয়েছে", "regeneratedKeystore": "কীস্টোর মুছে ফেলা হয়েছে",
"deleteTempDirLabel": "অস্থায়ী ফাইল মুছুন", "deleteTempDirLabel": "অস্থায়ী ফাইল মুছুন",
"deleteTempDirHint": "অব্যবহৃত অস্থায়ী ফাইল মুছুন", "deleteTempDirHint": "অব্যবহৃত অস্থায়ী ফাইল মুছুন",
"deletedTempDir": "অস্থায়ী ফাইল মুছে ফেলা হয়েছে", "deletedTempDir": "অস্থায়ী ফাইল মুছে ফেলা হয়েছে",

View File

@ -143,9 +143,9 @@
"sentryLabel": "Log Sentry", "sentryLabel": "Log Sentry",
"sentryHint": "Odeslat anonymní protokoly, které nám pomohou zlepšit ReVanced Manager", "sentryHint": "Odeslat anonymní protokoly, které nám pomohou zlepšit ReVanced Manager",
"restartAppForChanges": "Pro aplikování změn restartuj aplikaci", "restartAppForChanges": "Pro aplikování změn restartuj aplikaci",
"deleteKeystoreLabel": "Vymazat úložiště klíčů", "regenerateKeystoreLabel": "Vymazat úložiště klíčů",
"deleteKeystoreHint": "Smazat úložiště klíčů používané k podpisu aplikace", "regenerateKeystoreHint": "Smazat úložiště klíčů používané k podpisu aplikace",
"deletedKeystore": "Úložiště klíčů bylo smazáno", "regeneratedKeystore": "Úložiště klíčů bylo smazáno",
"deleteTempDirLabel": "Odstranit dočasné soubory", "deleteTempDirLabel": "Odstranit dočasné soubory",
"deleteTempDirHint": "Odstranit nepoužité dočasné soubory", "deleteTempDirHint": "Odstranit nepoužité dočasné soubory",
"deletedTempDir": "Dočasné soubory byly smazány", "deletedTempDir": "Dočasné soubory byly smazány",

View File

@ -147,9 +147,9 @@
"sentryLabel": "Sentry logning", "sentryLabel": "Sentry logning",
"sentryHint": "Send anonyme logfiler for at hjælpe os med at forbedre ReVanced Manager", "sentryHint": "Send anonyme logfiler for at hjælpe os med at forbedre ReVanced Manager",
"restartAppForChanges": "Genstart appen for at anvende ændringer", "restartAppForChanges": "Genstart appen for at anvende ændringer",
"deleteKeystoreLabel": "Slet keystore", "regenerateKeystoreLabel": "Slet keystore",
"deleteKeystoreHint": "Slet keystore der bruges til at signere appen", "regenerateKeystoreHint": "Slet keystore der bruges til at signere appen",
"deletedKeystore": "Keystore slettet", "regeneratedKeystore": "Keystore slettet",
"deleteTempDirLabel": "Slet midlertidige filer", "deleteTempDirLabel": "Slet midlertidige filer",
"deleteTempDirHint": "Slet ubrugte midlertidige filer", "deleteTempDirHint": "Slet ubrugte midlertidige filer",
"deletedTempDir": "Midlertidige filer slettet", "deletedTempDir": "Midlertidige filer slettet",

View File

@ -147,9 +147,9 @@
"sentryLabel": "Sentry-Protokollierung", "sentryLabel": "Sentry-Protokollierung",
"sentryHint": "Sende anonyme Protokolle, um den ReVanced Manager zu verbessern", "sentryHint": "Sende anonyme Protokolle, um den ReVanced Manager zu verbessern",
"restartAppForChanges": "Starte die App neu um die Änderungen zu übernehmen", "restartAppForChanges": "Starte die App neu um die Änderungen zu übernehmen",
"deleteKeystoreLabel": "Den Schlüsselspeicher löschen", "regenerateKeystoreLabel": "Den Schlüsselspeicher löschen",
"deleteKeystoreHint": "Löschen des Schlüsselspeichers, der zum Signieren der Anwendung verwendet wurde", "regenerateKeystoreHint": "Löschen des Schlüsselspeichers, der zum Signieren der Anwendung verwendet wurde",
"deletedKeystore": "Schlüsselspeicher gelöscht", "regeneratedKeystore": "Schlüsselspeicher gelöscht",
"deleteTempDirLabel": "Lösche temporäre Dateien", "deleteTempDirLabel": "Lösche temporäre Dateien",
"deleteTempDirHint": "Unbenutzte temporäre Dateien löschen", "deleteTempDirHint": "Unbenutzte temporäre Dateien löschen",
"deletedTempDir": "Temporäre Dateien gelöscht", "deletedTempDir": "Temporäre Dateien gelöscht",

View File

@ -147,9 +147,9 @@
"sentryLabel": "Αρχεία καταγραφής «Sentry»", "sentryLabel": "Αρχεία καταγραφής «Sentry»",
"sentryHint": "Στείλτε ανώνυμα αρχεία καταγραφής για να μας βοηθήσετε να βελτιώσουμε το ReVanced Manager", "sentryHint": "Στείλτε ανώνυμα αρχεία καταγραφής για να μας βοηθήσετε να βελτιώσουμε το ReVanced Manager",
"restartAppForChanges": "Επανεκκινήστε την εφαρμογή για να εφαρμόσετε αλλαγές", "restartAppForChanges": "Επανεκκινήστε την εφαρμογή για να εφαρμόσετε αλλαγές",
"deleteKeystoreLabel": "Διαγραφή κλειδιών", "regenerateKeystoreLabel": "Διαγραφή κλειδιών",
"deleteKeystoreHint": "Διαγράψτε το κλειδί που χρησιμοποιείται για την υπογραφή της εφαρμογής", "regenerateKeystoreHint": "Διαγράψτε το κλειδί που χρησιμοποιείται για την υπογραφή της εφαρμογής",
"deletedKeystore": "Το κλειδί διαγράφηκε", "regeneratedKeystore": "Το κλειδί διαγράφηκε",
"deleteTempDirLabel": "Διαγραφή προσωρινών αρχείων", "deleteTempDirLabel": "Διαγραφή προσωρινών αρχείων",
"deleteTempDirHint": "Διαγραφή των αχρησιμοποίητων προσωρινών αρχείων", "deleteTempDirHint": "Διαγραφή των αχρησιμοποίητων προσωρινών αρχείων",
"deletedTempDir": "Τα προσωρινά αρχεία διαγράφηκαν", "deletedTempDir": "Τα προσωρινά αρχεία διαγράφηκαν",

View File

@ -211,17 +211,21 @@
"resetStoredPatchesLabel": "Reset patches", "resetStoredPatchesLabel": "Reset patches",
"resetStoredPatchesHint": "Reset the stored patches selection", "resetStoredPatchesHint": "Reset the stored patches selection",
"resetStoredPatchesDialogText": "Are you sure you want to reset the stored patches selection?",
"resetStoredPatchesDialogTitle": "Reset patches selection?",
"resetStoredPatchesDialogText": "Resetting patches selection will remove all selected patches.",
"resetStoredPatches": "Patches selection has been reset", "resetStoredPatches": "Patches selection has been reset",
"deleteLogsLabel": "Delete logs", "deleteLogsLabel": "Delete logs",
"deleteLogsHint": "Delete collected manager logs", "deleteLogsHint": "Delete collected manager logs",
"deletedLogs": "Logs deleted", "deletedLogs": "Logs deleted",
"deleteKeystoreLabel": "Delete keystore", "regenerateKeystoreLabel": "Regenerate keystore",
"deleteKeystoreHint": "Delete the keystore used to sign the app", "regenerateKeystoreHint": "Regenerate the keystore used to sign the app",
"deleteKeystoreDialogText": "Are you sure you want to delete the keystore used to sign patched applications?",
"deletedKeystore": "Keystore deleted", "regenerateKeystoreDialogTitle": "Regenerate keystore?",
"regenerateKeystoreDialogText": "Patched apps signed with the old keystore will no longer be able to update.",
"regeneratedKeystore": "Keystore regenerated",
"exportKeystoreLabel": "Export keystore", "exportKeystoreLabel": "Export keystore",
"exportKeystoreHint": "Export keystore used to sign apps", "exportKeystoreHint": "Export keystore used to sign apps",

View File

@ -147,9 +147,9 @@
"sentryLabel": "Registro Sentry", "sentryLabel": "Registro Sentry",
"sentryHint": "Enviar registros anónimos para ayudarnos a mejorar ReVanced Manager", "sentryHint": "Enviar registros anónimos para ayudarnos a mejorar ReVanced Manager",
"restartAppForChanges": "Reinicie la app para aplicar los cambios", "restartAppForChanges": "Reinicie la app para aplicar los cambios",
"deleteKeystoreLabel": "Eliminar keystore", "regenerateKeystoreLabel": "Eliminar keystore",
"deleteKeystoreHint": "Eliminar el keystore usado para firmar la app", "regenerateKeystoreHint": "Eliminar el keystore usado para firmar la app",
"deletedKeystore": "Keystore eliminado", "regeneratedKeystore": "Keystore eliminado",
"deleteTempDirLabel": "Borrar archivos temporales", "deleteTempDirLabel": "Borrar archivos temporales",
"deleteTempDirHint": "Eliminar archivos temporales no utilizados", "deleteTempDirHint": "Eliminar archivos temporales no utilizados",
"deletedTempDir": "Archivos temporales eliminados", "deletedTempDir": "Archivos temporales eliminados",

View File

@ -143,9 +143,9 @@
"sentryLabel": "Registro centinela", "sentryLabel": "Registro centinela",
"sentryHint": "Enviar registros anónimos para ayudarnos a mejorar ReVanced Manager", "sentryHint": "Enviar registros anónimos para ayudarnos a mejorar ReVanced Manager",
"restartAppForChanges": "Reinicie la aplicación para aplicar los cambios", "restartAppForChanges": "Reinicie la aplicación para aplicar los cambios",
"deleteKeystoreLabel": "Eliminar keystore", "regenerateKeystoreLabel": "Eliminar keystore",
"deleteKeystoreHint": "Eliminar el keystore usado para firmar la app", "regenerateKeystoreHint": "Eliminar el keystore usado para firmar la app",
"deletedKeystore": "Keystore eliminado", "regeneratedKeystore": "Keystore eliminado",
"deleteTempDirLabel": "Borrar archivos temporales", "deleteTempDirLabel": "Borrar archivos temporales",
"deleteTempDirHint": "Eliminar archivos temporales sin utilizar", "deleteTempDirHint": "Eliminar archivos temporales sin utilizar",
"deletedTempDir": "Archivos temporales eliminados", "deletedTempDir": "Archivos temporales eliminados",

View File

@ -143,9 +143,9 @@
"sentryLabel": "Sentry-lokikirjaus", "sentryLabel": "Sentry-lokikirjaus",
"sentryHint": "Lähetä nimettömiä tietoja auttaaksesi ReVanced Managerin kehityksessä", "sentryHint": "Lähetä nimettömiä tietoja auttaaksesi ReVanced Managerin kehityksessä",
"restartAppForChanges": "Käynnistä sovellus uudestaan muutosten käyttöönottamiseksi", "restartAppForChanges": "Käynnistä sovellus uudestaan muutosten käyttöönottamiseksi",
"deleteKeystoreLabel": "Poista avainsäilö", "regenerateKeystoreLabel": "Poista avainsäilö",
"deleteKeystoreHint": "Poista sovelluksen allekirjoitukseen käytetty avainsäilö", "regenerateKeystoreHint": "Poista sovelluksen allekirjoitukseen käytetty avainsäilö",
"deletedKeystore": "Avainsäilö poistettiin", "regeneratedKeystore": "Avainsäilö poistettiin",
"deleteTempDirLabel": "Poista väliaikaistiedostot", "deleteTempDirLabel": "Poista väliaikaistiedostot",
"deleteTempDirHint": "Poista käyttämättömät väliaikaistiedostot", "deleteTempDirHint": "Poista käyttämättömät väliaikaistiedostot",
"deletedTempDir": "Väliaikaistiedostot poistettiin", "deletedTempDir": "Väliaikaistiedostot poistettiin",

View File

@ -147,9 +147,9 @@
"sentryLabel": "Journal sentinel", "sentryLabel": "Journal sentinel",
"sentryHint": "Envoyer des journaux anonymes pour nous aider à améliorer ReVanced Manager", "sentryHint": "Envoyer des journaux anonymes pour nous aider à améliorer ReVanced Manager",
"restartAppForChanges": "Redémarrez l'application pour appliquer les changements", "restartAppForChanges": "Redémarrez l'application pour appliquer les changements",
"deleteKeystoreLabel": "Supprimer le magasin de clés", "regenerateKeystoreLabel": "Supprimer le magasin de clés",
"deleteKeystoreHint": "Supprimer le magasin de clés utilisé pour signer l'application", "regenerateKeystoreHint": "Supprimer le magasin de clés utilisé pour signer l'application",
"deletedKeystore": "Magasin de clés supprimé", "regeneratedKeystore": "Magasin de clés supprimé",
"deleteTempDirLabel": "Supprimer les fichiers temporaires", "deleteTempDirLabel": "Supprimer les fichiers temporaires",
"deleteTempDirHint": "Supprimer les fichiers temporaires inutilisés", "deleteTempDirHint": "Supprimer les fichiers temporaires inutilisés",
"deletedTempDir": "Fichiers temporaires supprimés", "deletedTempDir": "Fichiers temporaires supprimés",

View File

@ -143,9 +143,9 @@
"sentryLabel": "संतरी लॉगिंग", "sentryLabel": "संतरी लॉगिंग",
"sentryHint": "उन्नत प्रबंधक को बेहतर बनाने में हमारी सहायता करने के लिए अनाम लॉग भेजें", "sentryHint": "उन्नत प्रबंधक को बेहतर बनाने में हमारी सहायता करने के लिए अनाम लॉग भेजें",
"restartAppForChanges": "Restart the app to apply changes", "restartAppForChanges": "Restart the app to apply changes",
"deleteKeystoreLabel": "कीस्टोर मिटाएं", "regenerateKeystoreLabel": "कीस्टोर मिटाएं",
"deleteKeystoreHint": "ऐप पर हस्ताक्षर करने के लिए उपयोग की जाने वाली कीस्टोर हटाएं", "regenerateKeystoreHint": "ऐप पर हस्ताक्षर करने के लिए उपयोग की जाने वाली कीस्टोर हटाएं",
"deletedKeystore": "कीस्टोर हटा दिया गया", "regeneratedKeystore": "कीस्टोर हटा दिया गया",
"deleteTempDirLabel": "अस्थाई फ़ाइलें मिटायें", "deleteTempDirLabel": "अस्थाई फ़ाइलें मिटायें",
"deleteTempDirHint": "अप्रयुक्त अस्थाई फ़ाइलें मिटायें", "deleteTempDirHint": "अप्रयुक्त अस्थाई फ़ाइलें मिटायें",
"deletedTempDir": "क्षणिक फ़ाईल मिटाए गए।", "deletedTempDir": "क्षणिक फ़ाईल मिटाए गए।",

View File

@ -143,9 +143,9 @@
"sentryLabel": "Sentry naplózás", "sentryLabel": "Sentry naplózás",
"sentryHint": "Névtelen használati adatok küldésével hozzájárulhatsz, hogy a ReVanced Manager még jobb legyen", "sentryHint": "Névtelen használati adatok küldésével hozzájárulhatsz, hogy a ReVanced Manager még jobb legyen",
"restartAppForChanges": "Indítsd újra az alkalmazást a változások alkalmazásához", "restartAppForChanges": "Indítsd újra az alkalmazást a változások alkalmazásához",
"deleteKeystoreLabel": "Kulcstartó törlése", "regenerateKeystoreLabel": "Kulcstartó törlése",
"deleteKeystoreHint": "Törli az alkalmazás aláírásához használt kulcstartót", "regenerateKeystoreHint": "Törli az alkalmazás aláírásához használt kulcstartót",
"deletedKeystore": "Kulcstartó törölve", "regeneratedKeystore": "Kulcstartó törölve",
"deleteTempDirLabel": "Ideiglenes fájlok törlése", "deleteTempDirLabel": "Ideiglenes fájlok törlése",
"deleteTempDirHint": "Felesleges átmeneti fájlok törlése", "deleteTempDirHint": "Felesleges átmeneti fájlok törlése",
"deletedTempDir": "Ideiglenes fájlok törölve", "deletedTempDir": "Ideiglenes fájlok törölve",

View File

@ -147,9 +147,9 @@
"sentryLabel": "Log sentry", "sentryLabel": "Log sentry",
"sentryHint": "Kirim log anonim untuk membantu kami meningkatkan ReVanced Manager", "sentryHint": "Kirim log anonim untuk membantu kami meningkatkan ReVanced Manager",
"restartAppForChanges": "Mulai ulang aplikasi untuk menerapkan perubahan", "restartAppForChanges": "Mulai ulang aplikasi untuk menerapkan perubahan",
"deleteKeystoreLabel": "Hapus penyimpanan kunci", "regenerateKeystoreLabel": "Hapus penyimpanan kunci",
"deleteKeystoreHint": "Hapus penyimpanan kunci yang digunakan untuk menandatangani aplikasi", "regenerateKeystoreHint": "Hapus penyimpanan kunci yang digunakan untuk menandatangani aplikasi",
"deletedKeystore": "Penyimpanan kunci dihapus", "regeneratedKeystore": "Penyimpanan kunci dihapus",
"deleteTempDirLabel": "Hapus berkas sementara", "deleteTempDirLabel": "Hapus berkas sementara",
"deleteTempDirHint": "Hapus berkas sementara yang tidak dipakai", "deleteTempDirHint": "Hapus berkas sementara yang tidak dipakai",
"deletedTempDir": "Berkas sementara dihapus", "deletedTempDir": "Berkas sementara dihapus",

View File

@ -147,9 +147,9 @@
"sentryLabel": "Log di Sentry", "sentryLabel": "Log di Sentry",
"sentryHint": "Invia log anonimi per aiutarci a migliorare ReVanced Manager", "sentryHint": "Invia log anonimi per aiutarci a migliorare ReVanced Manager",
"restartAppForChanges": "Riavvia l'app per applicare le modifiche", "restartAppForChanges": "Riavvia l'app per applicare le modifiche",
"deleteKeystoreLabel": "Elimina keystore", "regenerateKeystoreLabel": "Elimina keystore",
"deleteKeystoreHint": "Elimina il keystore usato per firmare l'applicazione", "regenerateKeystoreHint": "Elimina il keystore usato per firmare l'applicazione",
"deletedKeystore": "Keystore eliminato", "regeneratedKeystore": "Keystore eliminato",
"deleteTempDirLabel": "Elimina file temporanei", "deleteTempDirLabel": "Elimina file temporanei",
"deleteTempDirHint": "Elimina i file temporanei non utilizzati", "deleteTempDirHint": "Elimina i file temporanei non utilizzati",
"deletedTempDir": "File temporanei eliminati", "deletedTempDir": "File temporanei eliminati",

View File

@ -143,9 +143,9 @@
"sentryLabel": "Sentry 로깅", "sentryLabel": "Sentry 로깅",
"sentryHint": "익명의 로그를 보내 ReVanced Manager를 개선할 수 있도록 도와주세요", "sentryHint": "익명의 로그를 보내 ReVanced Manager를 개선할 수 있도록 도와주세요",
"restartAppForChanges": "변경 사항을 적용하려면 앱을 다시 시작하세요", "restartAppForChanges": "변경 사항을 적용하려면 앱을 다시 시작하세요",
"deleteKeystoreLabel": "키스토어 제거", "regenerateKeystoreLabel": "키스토어 제거",
"deleteKeystoreHint": "앱을 서명하기 위해 사용되는 키스토어를 제거합니다.", "regenerateKeystoreHint": "앱을 서명하기 위해 사용되는 키스토어를 제거합니다.",
"deletedKeystore": "키스토어 제거됨", "regeneratedKeystore": "키스토어 제거됨",
"deleteTempDirLabel": "임시 파일 삭제", "deleteTempDirLabel": "임시 파일 삭제",
"deleteTempDirHint": "사용되지 않은 임시 파일 삭제", "deleteTempDirHint": "사용되지 않은 임시 파일 삭제",
"deletedTempDir": "임시 파일 삭제됨", "deletedTempDir": "임시 파일 삭제됨",

View File

@ -147,9 +147,9 @@
"sentryLabel": "Klaidų rinkimo įrankio įrašai", "sentryLabel": "Klaidų rinkimo įrankio įrašai",
"sentryHint": "Siųsti anoniminius įrašus, kad padėtumėte mums tobulinti ReVanced Manager", "sentryHint": "Siųsti anoniminius įrašus, kad padėtumėte mums tobulinti ReVanced Manager",
"restartAppForChanges": "Iš naujo paleiskite programą, kad modifikacijos įsigaliotų", "restartAppForChanges": "Iš naujo paleiskite programą, kad modifikacijos įsigaliotų",
"deleteKeystoreLabel": "Ištrinti keystore", "regenerateKeystoreLabel": "Ištrinti keystore",
"deleteKeystoreHint": "Ištrinti keystore kuris naudojamas pasirašyti programą", "regenerateKeystoreHint": "Ištrinti keystore kuris naudojamas pasirašyti programą",
"deletedKeystore": "Keystore ištrintas", "regeneratedKeystore": "Keystore ištrintas",
"deleteTempDirLabel": "Ištrinti laikinus failus", "deleteTempDirLabel": "Ištrinti laikinus failus",
"deleteTempDirHint": "Ištrinti nenaudojamus laikinus failus", "deleteTempDirHint": "Ištrinti nenaudojamus laikinus failus",
"deletedTempDir": "Laikini failai ištrinti", "deletedTempDir": "Laikini failai ištrinti",

View File

@ -143,9 +143,9 @@
"sentryLabel": "Rekod Sentry", "sentryLabel": "Rekod Sentry",
"sentryHint": "Hantarkan log anonymous untuk bantu kami menambah baik Revanced Manager", "sentryHint": "Hantarkan log anonymous untuk bantu kami menambah baik Revanced Manager",
"restartAppForChanges": "Mulakan semula apl untuk menggunakan tetapan", "restartAppForChanges": "Mulakan semula apl untuk menggunakan tetapan",
"deleteKeystoreLabel": "Buang keystore", "regenerateKeystoreLabel": "Buang keystore",
"deleteKeystoreHint": "Buang keystore yang digunakan untuk mengesahkan apl", "regenerateKeystoreHint": "Buang keystore yang digunakan untuk mengesahkan apl",
"deletedKeystore": "Keystore dibuang", "regeneratedKeystore": "Keystore dibuang",
"deleteTempDirLabel": "Buang fail sementara", "deleteTempDirLabel": "Buang fail sementara",
"deleteTempDirHint": "Buang fail sementara yang tidak digunakan", "deleteTempDirHint": "Buang fail sementara yang tidak digunakan",
"deletedTempDir": "Fail sementara dibuang", "deletedTempDir": "Fail sementara dibuang",

View File

@ -147,9 +147,9 @@
"sentryLabel": "Zapisywanie logów", "sentryLabel": "Zapisywanie logów",
"sentryHint": "Wysyłaj anonimowe logi, aby pomóc nam ulepszyć ReVanced Manager", "sentryHint": "Wysyłaj anonimowe logi, aby pomóc nam ulepszyć ReVanced Manager",
"restartAppForChanges": "Zrestartuj aplikację, aby zastosować zmiany", "restartAppForChanges": "Zrestartuj aplikację, aby zastosować zmiany",
"deleteKeystoreLabel": "Usuń klucz", "regenerateKeystoreLabel": "Usuń klucz",
"deleteKeystoreHint": "Usuń klucz używany do podpisywania aplikacji", "regenerateKeystoreHint": "Usuń klucz używany do podpisywania aplikacji",
"deletedKeystore": "Klucz usunięty", "regeneratedKeystore": "Klucz usunięty",
"deleteTempDirLabel": "Usuń pliki tymczasowe", "deleteTempDirLabel": "Usuń pliki tymczasowe",
"deleteTempDirHint": "Usuń nieużywane pliki tymczasowe", "deleteTempDirHint": "Usuń nieużywane pliki tymczasowe",
"deletedTempDir": "Pliki tymczasowe zostały usunięte", "deletedTempDir": "Pliki tymczasowe zostały usunięte",

View File

@ -143,9 +143,9 @@
"sentryLabel": "Registro do sentinela de erros", "sentryLabel": "Registro do sentinela de erros",
"sentryHint": "Envie registros anônimos para nos ajudar a melhorar o ReVanced Manager", "sentryHint": "Envie registros anônimos para nos ajudar a melhorar o ReVanced Manager",
"restartAppForChanges": "Reinicie o app para aplicar as mudanças", "restartAppForChanges": "Reinicie o app para aplicar as mudanças",
"deleteKeystoreLabel": "Apagar registro de chaves", "regenerateKeystoreLabel": "Apagar registro de chaves",
"deleteKeystoreHint": "Apagar o registro de chaves usado para assinar o app", "regenerateKeystoreHint": "Apagar o registro de chaves usado para assinar o app",
"deletedKeystore": "Registro de chaves apagado", "regeneratedKeystore": "Registro de chaves apagado",
"deleteTempDirLabel": "Apagar arquivos temporários", "deleteTempDirLabel": "Apagar arquivos temporários",
"deleteTempDirHint": "Apagar os arquivos temporários inutilizados", "deleteTempDirHint": "Apagar os arquivos temporários inutilizados",
"deletedTempDir": "Arquivos temporários apagados", "deletedTempDir": "Arquivos temporários apagados",

View File

@ -147,9 +147,9 @@
"sentryLabel": "Registo do coletor de erros", "sentryLabel": "Registo do coletor de erros",
"sentryHint": "Enviar registos anónimos para nos ajudar a melhorar o ReVanced Manager", "sentryHint": "Enviar registos anónimos para nos ajudar a melhorar o ReVanced Manager",
"restartAppForChanges": "Reinicia a aplicação para aplicar as alterações", "restartAppForChanges": "Reinicia a aplicação para aplicar as alterações",
"deleteKeystoreLabel": "Excluir keystore", "regenerateKeystoreLabel": "Excluir keystore",
"deleteKeystoreHint": "Excluir a keystore usada para assinar a aplicação", "regenerateKeystoreHint": "Excluir a keystore usada para assinar a aplicação",
"deletedKeystore": "Keystore excluída", "regeneratedKeystore": "Keystore excluída",
"deleteTempDirLabel": "Apagar arquivos temporários", "deleteTempDirLabel": "Apagar arquivos temporários",
"deleteTempDirHint": "Apagar arquivos temporários não utilizados", "deleteTempDirHint": "Apagar arquivos temporários não utilizados",
"deletedTempDir": "Arquivos temporários apagados", "deletedTempDir": "Arquivos temporários apagados",

View File

@ -147,9 +147,9 @@
"sentryLabel": "Logging de Santinelă", "sentryLabel": "Logging de Santinelă",
"sentryHint": "Trimite log-uri anonime pentru a ne ajuta să îmbunătățim ReVanced Manager", "sentryHint": "Trimite log-uri anonime pentru a ne ajuta să îmbunătățim ReVanced Manager",
"restartAppForChanges": "Reporniți aplicația pentru a aplica modificările", "restartAppForChanges": "Reporniți aplicația pentru a aplica modificările",
"deleteKeystoreLabel": "Ștergeți keystore-ul", "regenerateKeystoreLabel": "Ștergeți keystore-ul",
"deleteKeystoreHint": "Ștergeți keystore-ul utilizat pentru a însemna aplicația", "regenerateKeystoreHint": "Ștergeți keystore-ul utilizat pentru a însemna aplicația",
"deletedKeystore": "Keystore șters", "regeneratedKeystore": "Keystore șters",
"deleteTempDirLabel": "Ștergeți fișierele temporare", "deleteTempDirLabel": "Ștergeți fișierele temporare",
"deleteTempDirHint": "Șterge fișierele temporare neutilizate", "deleteTempDirHint": "Șterge fișierele temporare neutilizate",
"deletedTempDir": "Fișierele temporare au fost șterse", "deletedTempDir": "Fișierele temporare au fost șterse",

View File

@ -147,9 +147,9 @@
"sentryLabel": "Логирование Sentry", "sentryLabel": "Логирование Sentry",
"sentryHint": "Отправлять анонимные логи для улучшения ReVanced Manager-а", "sentryHint": "Отправлять анонимные логи для улучшения ReVanced Manager-а",
"restartAppForChanges": "Перезапустите приложение для применения изменений", "restartAppForChanges": "Перезапустите приложение для применения изменений",
"deleteKeystoreLabel": "Удалить хранилище ключей", "regenerateKeystoreLabel": "Удалить хранилище ключей",
"deleteKeystoreHint": "Удалить хранилище ключей, использованных для подписи приложения", "regenerateKeystoreHint": "Удалить хранилище ключей, использованных для подписи приложения",
"deletedKeystore": "Хранилище ключей удалено", "regeneratedKeystore": "Хранилище ключей удалено",
"deleteTempDirLabel": "Удалить временные файлы", "deleteTempDirLabel": "Удалить временные файлы",
"deleteTempDirHint": "Удалить неиспользуемые временные файлы", "deleteTempDirHint": "Удалить неиспользуемые временные файлы",
"deletedTempDir": "Временные файлы удалены", "deletedTempDir": "Временные файлы удалены",

View File

@ -147,9 +147,9 @@
"sentryLabel": "Log Sentry", "sentryLabel": "Log Sentry",
"sentryHint": "Odoslať anonymné protokoly, ktoré nám pomôžu zlepšiť ReVanced Manager", "sentryHint": "Odoslať anonymné protokoly, ktoré nám pomôžu zlepšiť ReVanced Manager",
"restartAppForChanges": "Ak chcete použiť zmeny, reštartujte aplikáciu", "restartAppForChanges": "Ak chcete použiť zmeny, reštartujte aplikáciu",
"deleteKeystoreLabel": "Odstrániť úložisko kľúčov", "regenerateKeystoreLabel": "Odstrániť úložisko kľúčov",
"deleteKeystoreHint": "Odstrániť úložisko kľúčov použité na podpísanie aplikácie", "regenerateKeystoreHint": "Odstrániť úložisko kľúčov použité na podpísanie aplikácie",
"deletedKeystore": "Úložisko kľúčov odstránené", "regeneratedKeystore": "Úložisko kľúčov odstránené",
"deleteTempDirLabel": "Odstrániť dočasné súbory", "deleteTempDirLabel": "Odstrániť dočasné súbory",
"deleteTempDirHint": "Odstrániť nepoužívané dočasné súbory", "deleteTempDirHint": "Odstrániť nepoužívané dočasné súbory",
"deletedTempDir": "Dočasné súbory odstránené", "deletedTempDir": "Dočasné súbory odstránené",

View File

@ -143,9 +143,9 @@
"sentryLabel": "Sentry prikupljanje grešaka", "sentryLabel": "Sentry prikupljanje grešaka",
"sentryHint": "Pošaljite anonimnu evidenciju da biste nam pomogli da poboljšamo ReVanced Manager", "sentryHint": "Pošaljite anonimnu evidenciju da biste nam pomogli da poboljšamo ReVanced Manager",
"restartAppForChanges": "Ponovo pokrenite aplikaciju da biste primenili promene", "restartAppForChanges": "Ponovo pokrenite aplikaciju da biste primenili promene",
"deleteKeystoreLabel": "Izbrišite skladište ključeva", "regenerateKeystoreLabel": "Izbrišite skladište ključeva",
"deleteKeystoreHint": "Izbrišite skladište ključeva korišćeno za potpisivanje aplikacije", "regenerateKeystoreHint": "Izbrišite skladište ključeva korišćeno za potpisivanje aplikacije",
"deletedKeystore": "Skladište ključeva je izbrisano", "regeneratedKeystore": "Skladište ključeva je izbrisano",
"deleteTempDirLabel": "Izbrišite privremene datoteke", "deleteTempDirLabel": "Izbrišite privremene datoteke",
"deleteTempDirHint": "Izbrišite nekorišćene privremene datoteke", "deleteTempDirHint": "Izbrišite nekorišćene privremene datoteke",
"deletedTempDir": "Privremene datoteke su izbrisane", "deletedTempDir": "Privremene datoteke su izbrisane",

View File

@ -143,9 +143,9 @@
"sentryLabel": "Sentry прикупљање грешака", "sentryLabel": "Sentry прикупљање грешака",
"sentryHint": "Пошаљите анонимну евиденцију да бисте нам помогли да побољшамо ReVanced Manager", "sentryHint": "Пошаљите анонимну евиденцију да бисте нам помогли да побољшамо ReVanced Manager",
"restartAppForChanges": "Поново покрените апликацију да бисте применили промене", "restartAppForChanges": "Поново покрените апликацију да бисте применили промене",
"deleteKeystoreLabel": "Избришите складиште кључева", "regenerateKeystoreLabel": "Избришите складиште кључева",
"deleteKeystoreHint": "Избришите складиште кључева коришћено за потписивање апликације", "regenerateKeystoreHint": "Избришите складиште кључева коришћено за потписивање апликације",
"deletedKeystore": "Складиште кључева је избрисано", "regeneratedKeystore": "Складиште кључева је избрисано",
"deleteTempDirLabel": "Избришите привремене датотеке", "deleteTempDirLabel": "Избришите привремене датотеке",
"deleteTempDirHint": "Избришите некоришћене привремене датотеке", "deleteTempDirHint": "Избришите некоришћене привремене датотеке",
"deletedTempDir": "Привремене датотеке су избрисане", "deletedTempDir": "Привремене датотеке су избрисане",

View File

@ -143,9 +143,9 @@
"sentryLabel": "Sentry loggning", "sentryLabel": "Sentry loggning",
"sentryHint": "Hjälp oss förbättra ReVanced Manager genom att skicka anonyma loggar", "sentryHint": "Hjälp oss förbättra ReVanced Manager genom att skicka anonyma loggar",
"restartAppForChanges": "Starta om appen för att tillämpa ändringar", "restartAppForChanges": "Starta om appen för att tillämpa ändringar",
"deleteKeystoreLabel": "Radera keystore", "regenerateKeystoreLabel": "Radera keystore",
"deleteKeystoreHint": "Radera keystore filen som används för att signera appen", "regenerateKeystoreHint": "Radera keystore filen som används för att signera appen",
"deletedKeystore": "Raderade keystore", "regeneratedKeystore": "Raderade keystore",
"deleteTempDirLabel": "Ta bort temporära filer", "deleteTempDirLabel": "Ta bort temporära filer",
"deleteTempDirHint": "Radera oanvända temporära filer", "deleteTempDirHint": "Radera oanvända temporära filer",
"deletedTempDir": "Raderade temporära filer", "deletedTempDir": "Raderade temporära filer",

View File

@ -147,9 +147,9 @@
"sentryLabel": "Sentry logging", "sentryLabel": "Sentry logging",
"sentryHint": "Tuma kumbukumbu bila majina ili utusaidie kuboresha Revanced Manager", "sentryHint": "Tuma kumbukumbu bila majina ili utusaidie kuboresha Revanced Manager",
"restartAppForChanges": "Anzisha tena programu ili kutekeleza mabadiliko", "restartAppForChanges": "Anzisha tena programu ili kutekeleza mabadiliko",
"deleteKeystoreLabel": "Futa Duka la Ufunguo", "regenerateKeystoreLabel": "Futa Duka la Ufunguo",
"deleteKeystoreHint": "Futa Duka la Ufunguo iliyotumika kusaini programu", "regenerateKeystoreHint": "Futa Duka la Ufunguo iliyotumika kusaini programu",
"deletedKeystore": "Duka la ufunguo imefutwa", "regeneratedKeystore": "Duka la ufunguo imefutwa",
"deleteTempDirLabel": "Futa faili za muda", "deleteTempDirLabel": "Futa faili za muda",
"deleteTempDirHint": "Futa faili za muda ambazo hazijatumiwa", "deleteTempDirHint": "Futa faili za muda ambazo hazijatumiwa",
"deletedTempDir": "Faili za muda zimefutwa", "deletedTempDir": "Faili za muda zimefutwa",

View File

@ -147,9 +147,9 @@
"sentryLabel": "Sentry günlükleri", "sentryLabel": "Sentry günlükleri",
"sentryHint": "ReVanced Manager'ı geliştirmemize yardımcı olmak için anonim günlükler gönderin", "sentryHint": "ReVanced Manager'ı geliştirmemize yardımcı olmak için anonim günlükler gönderin",
"restartAppForChanges": "Değişiklikleri uygulamak için uygulamayı yeniden başlatın", "restartAppForChanges": "Değişiklikleri uygulamak için uygulamayı yeniden başlatın",
"deleteKeystoreLabel": "Keystore'u sil", "regenerateKeystoreLabel": "Keystore'u sil",
"deleteKeystoreHint": "Uygulamayı imzalamak için kullanılan keystore'u silin", "regenerateKeystoreHint": "Uygulamayı imzalamak için kullanılan keystore'u silin",
"deletedKeystore": "Keystore silindi", "regeneratedKeystore": "Keystore silindi",
"deleteTempDirLabel": "Geçici dosyaları sil", "deleteTempDirLabel": "Geçici dosyaları sil",
"deleteTempDirHint": "Kullanılmayan geçici dosyaları sil", "deleteTempDirHint": "Kullanılmayan geçici dosyaları sil",
"deletedTempDir": "Geçici dosyalar silindi", "deletedTempDir": "Geçici dosyalar silindi",

View File

@ -143,9 +143,9 @@
"sentryLabel": "سنتری لاگنگ", "sentryLabel": "سنتری لاگنگ",
"sentryHint": "ریوینسڈ مینیجر کی بہتری میں مدد کے لیے گمنام لاگ بھیجیں", "sentryHint": "ریوینسڈ مینیجر کی بہتری میں مدد کے لیے گمنام لاگ بھیجیں",
"restartAppForChanges": "تبدیلیاں دیکھنے کیلیئے اپلی کیشن کو دوبارہ چلائیں", "restartAppForChanges": "تبدیلیاں دیکھنے کیلیئے اپلی کیشن کو دوبارہ چلائیں",
"deleteKeystoreLabel": "ڈیلیٹ کی سٹور", "regenerateKeystoreLabel": "ڈیلیٹ کی سٹور",
"deleteKeystoreHint": "ایپ پر دستخط کرنے کے لیے استعمال ہونے والے کی اسٹور کو ڈیلیٹ کریں", "regenerateKeystoreHint": "ایپ پر دستخط کرنے کے لیے استعمال ہونے والے کی اسٹور کو ڈیلیٹ کریں",
"deletedKeystore": "کی اسٹور حذف ہو گیا ہے", "regeneratedKeystore": "کی اسٹور حذف ہو گیا ہے",
"deleteTempDirLabel": "عارضی فائلوں کو حذف کریں", "deleteTempDirLabel": "عارضی فائلوں کو حذف کریں",
"deleteTempDirHint": "غیر استعمال شدہ عارضی فائلوں کو حذف کریں", "deleteTempDirHint": "غیر استعمال شدہ عارضی فائلوں کو حذف کریں",
"deletedTempDir": "عارضی فائلیں حذف کردی گئی", "deletedTempDir": "عارضی فائلیں حذف کردی گئی",

View File

@ -147,9 +147,9 @@
"sentryLabel": "Nhật ký theo dõi", "sentryLabel": "Nhật ký theo dõi",
"sentryHint": "Gửi nhật ký ẩn danh để giúp chúng tôi cải thiện ReVanced Manager", "sentryHint": "Gửi nhật ký ẩn danh để giúp chúng tôi cải thiện ReVanced Manager",
"restartAppForChanges": "Khởi động lại ứng dụng để áp dụng thay đổi", "restartAppForChanges": "Khởi động lại ứng dụng để áp dụng thay đổi",
"deleteKeystoreLabel": "Xóa kho khóa", "regenerateKeystoreLabel": "Xóa kho khóa",
"deleteKeystoreHint": "Xóa kho khóa dùng để ký ứng dụng", "regenerateKeystoreHint": "Xóa kho khóa dùng để ký ứng dụng",
"deletedKeystore": "Kho khóa đã xóa", "regeneratedKeystore": "Kho khóa đã xóa",
"deleteTempDirLabel": "Xóa tệp tạm thời", "deleteTempDirLabel": "Xóa tệp tạm thời",
"deleteTempDirHint": "Xóa các tệp tạm thời không sử dụng", "deleteTempDirHint": "Xóa các tệp tạm thời không sử dụng",
"deletedTempDir": "Đã xóa các tệp tạm thời", "deletedTempDir": "Đã xóa các tệp tạm thời",

View File

@ -143,9 +143,9 @@
"sentryLabel": "哨兵日志", "sentryLabel": "哨兵日志",
"sentryHint": "发送匿名日志以帮助我们改进ReVanced Manager", "sentryHint": "发送匿名日志以帮助我们改进ReVanced Manager",
"restartAppForChanges": "重启应用以生效", "restartAppForChanges": "重启应用以生效",
"deleteKeystoreLabel": "删除密钥存储", "regenerateKeystoreLabel": "删除密钥存储",
"deleteKeystoreHint": "删除用于签名应用的密钥存储", "regenerateKeystoreHint": "删除用于签名应用的密钥存储",
"deletedKeystore": "密钥存储已删除", "regeneratedKeystore": "密钥存储已删除",
"deleteTempDirLabel": "删除临时文件", "deleteTempDirLabel": "删除临时文件",
"deleteTempDirHint": "删除未使用的临时文件", "deleteTempDirHint": "删除未使用的临时文件",
"deletedTempDir": "临时文件已删除", "deletedTempDir": "临时文件已删除",

View File

@ -143,9 +143,9 @@
"sentryLabel": "Sentry 日志記錄", "sentryLabel": "Sentry 日志記錄",
"sentryHint": "發送匿名的日志記錄以幫助我們改善 ReVanced Manager", "sentryHint": "發送匿名的日志記錄以幫助我們改善 ReVanced Manager",
"restartAppForChanges": "重啓應用以套用變更", "restartAppForChanges": "重啓應用以套用變更",
"deleteKeystoreLabel": "刪除 keystore", "regenerateKeystoreLabel": "刪除 keystore",
"deleteKeystoreHint": "刪除登入程序已用的 keystore", "regenerateKeystoreHint": "刪除登入程序已用的 keystore",
"deletedKeystore": "已刪除 keystore", "regeneratedKeystore": "已刪除 keystore",
"deleteTempDirLabel": "刪除暫時文件", "deleteTempDirLabel": "刪除暫時文件",
"deleteTempDirHint": "刪除無用暫時文件", "deleteTempDirHint": "刪除無用暫時文件",
"deletedTempDir": "暫時文件已刪除", "deletedTempDir": "暫時文件已刪除",

View File

@ -147,9 +147,9 @@
"sentryLabel": "輸入記錄", "sentryLabel": "輸入記錄",
"sentryHint": "傳送匿名記錄以協助我們改進 ReVanced Manager", "sentryHint": "傳送匿名記錄以協助我們改進 ReVanced Manager",
"restartAppForChanges": "重新啟動應用程式以套用變更", "restartAppForChanges": "重新啟動應用程式以套用變更",
"deleteKeystoreLabel": "刪除金鑰儲存區", "regenerateKeystoreLabel": "刪除金鑰儲存區",
"deleteKeystoreHint": "刪除用於登入應用程式的金鑰儲存區", "regenerateKeystoreHint": "刪除用於登入應用程式的金鑰儲存區",
"deletedKeystore": "已刪除金鑰儲存區", "regeneratedKeystore": "已刪除金鑰儲存區",
"deleteTempDirLabel": "刪除暫存檔案", "deleteTempDirLabel": "刪除暫存檔案",
"deleteTempDirHint": "刪除未使用的暫存檔案", "deleteTempDirHint": "刪除未使用的暫存檔案",
"deletedTempDir": "暫存檔案目錄", "deletedTempDir": "暫存檔案目錄",

View File

@ -1 +1 @@
Patch your favourite apps, right on your device. Patch your favorite apps, right on your device.

View File

@ -8,7 +8,6 @@ class Patch {
Patch({ Patch({
required this.name, required this.name,
required this.description, required this.description,
required this.version,
required this.excluded, required this.excluded,
required this.dependencies, required this.dependencies,
required this.compatiblePackages, required this.compatiblePackages,
@ -17,7 +16,6 @@ class Patch {
factory Patch.fromJson(Map<String, dynamic> json) => _$PatchFromJson(json); factory Patch.fromJson(Map<String, dynamic> json) => _$PatchFromJson(json);
final String name; final String name;
final String description; final String description;
final String version;
final bool excluded; final bool excluded;
final List<String> dependencies; final List<String> dependencies;
final List<Package> compatiblePackages; final List<Package> compatiblePackages;

View File

@ -1,12 +1,12 @@
import 'dart:io'; import 'dart:io';
import 'package:app_installer/app_installer.dart';
import 'package:collection/collection.dart'; import 'package:collection/collection.dart';
import 'package:cr_file_saver/file_saver.dart'; import 'package:cr_file_saver/file_saver.dart';
import 'package:device_apps/device_apps.dart'; import 'package:device_apps/device_apps.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:injectable/injectable.dart'; import 'package:injectable/injectable.dart';
import 'package:install_plugin/install_plugin.dart';
import 'package:path_provider/path_provider.dart'; import 'package:path_provider/path_provider.dart';
import 'package:revanced_manager/app/app.locator.dart'; import 'package:revanced_manager/app/app.locator.dart';
import 'package:revanced_manager/models/patch.dart'; import 'package:revanced_manager/models/patch.dart';
@ -144,20 +144,6 @@ class PatcherAPI {
); );
} }
Future<String> getOriginalFilePath(String packageName) async {
try {
final bool hasRootPermissions = await _rootAPI.hasRootPermissions();
if (hasRootPermissions) {
return await _rootAPI.getOriginalFilePath(packageName);
}
} on Exception catch (e) {
if (kDebugMode) {
print(e);
}
}
return '';
}
Future<void> runPatcher( Future<void> runPatcher(
String packageName, String packageName,
String apkFilePath, String apkFilePath,
@ -191,10 +177,7 @@ class PatcherAPI {
_outFile = File('${workDir.path}/out.apk'); _outFile = File('${workDir.path}/out.apk');
final Directory cacheDir = Directory('${workDir.path}/cache'); final Directory cacheDir = Directory('${workDir.path}/cache');
cacheDir.createSync(); cacheDir.createSync();
String originalFilePath = await getOriginalFilePath(packageName); final String originalFilePath = apkFilePath;
if (originalFilePath.isEmpty) {
originalFilePath = apkFilePath;
}
try { try {
await patcherChannel.invokeMethod( await patcherChannel.invokeMethod(
'runPatcher', 'runPatcher',
@ -232,10 +215,8 @@ class PatcherAPI {
); );
} }
} else { } else {
await AppInstaller.installApk(_outFile!.path); final install = await InstallPlugin.installApk(_outFile!.path);
return await DeviceApps.isAppInstalled( return install['isSuccess'];
patchedApp.packageName,
);
} }
} on Exception catch (e) { } on Exception catch (e) {
if (kDebugMode) { if (kDebugMode) {

View File

@ -73,7 +73,7 @@ class RootAPI {
} }
Future<List<String>> getInstalledApps() async { Future<List<String>> getInstalledApps() async {
final List<String> apps = List.empty(); final List<String> apps = List.empty(growable: true);
try { try {
String? res = await Root.exec( String? res = await Root.exec(
cmd: 'ls "$_revancedDirPath"', cmd: 'ls "$_revancedDirPath"',
@ -209,20 +209,6 @@ class RootAPI {
return res != null && res.isNotEmpty; return res != null && res.isNotEmpty;
} }
Future<String> getOriginalFilePath(String packageName) async {
final String originalPath = '$_revancedDirPath/$packageName/original.apk';
final String oldOrigPath = '$_revancedOldDirPath/$packageName/original.apk';
final bool isInstalled = await isAppInstalled(packageName);
if (isInstalled && await isMounted(packageName)) {
if (await fileExists(originalPath)) {
return originalPath;
} else if (await fileExists(oldOrigPath)) {
return oldOrigPath;
}
}
return '';
}
Future<void> saveOriginalFilePath( Future<void> saveOriginalFilePath(
String packageName, String packageName,
String originalFilePath, String originalFilePath,

View File

@ -88,7 +88,7 @@ class _AppSelectorViewState extends State<AppSelectorView> {
), ),
), ),
) )
: model.apps.isEmpty : model.allApps.isEmpty
? const AppSkeletonLoader() ? const AppSkeletonLoader()
: Padding( : Padding(
padding: const EdgeInsets.symmetric(horizontal: 12.0) padding: const EdgeInsets.symmetric(horizontal: 12.0)

View File

@ -45,9 +45,7 @@ class AppSelectorViewModel extends BaseViewModel {
.length .length
.compareTo(_patcherAPI.getFilteredPatches(a.packageName).length), .compareTo(_patcherAPI.getFilteredPatches(a.packageName).length),
); );
noApps = apps.isEmpty;
getAllApps(); getAllApps();
notifyListeners(); notifyListeners();
} }
@ -57,7 +55,7 @@ class AppSelectorViewModel extends BaseViewModel {
.toSet() .toSet()
.where((name) => !apps.any((app) => app.packageName == name)) .where((name) => !apps.any((app) => app.packageName == name))
.toList(); .toList();
noApps = allApps.isEmpty;
return allApps; return allApps;
} }

View File

@ -1,13 +1,13 @@
// ignore_for_file: use_build_context_synchronously // ignore_for_file: use_build_context_synchronously
import 'dart:async'; import 'dart:async';
import 'dart:io'; import 'dart:io';
import 'package:app_installer/app_installer.dart';
import 'package:cross_connectivity/cross_connectivity.dart'; import 'package:cross_connectivity/cross_connectivity.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_i18n/flutter_i18n.dart'; import 'package:flutter_i18n/flutter_i18n.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:injectable/injectable.dart'; import 'package:injectable/injectable.dart';
import 'package:install_plugin/install_plugin.dart';
import 'package:path_provider/path_provider.dart'; import 'package:path_provider/path_provider.dart';
import 'package:revanced_manager/app/app.locator.dart'; import 'package:revanced_manager/app/app.locator.dart';
import 'package:revanced_manager/app/app.router.dart'; import 'package:revanced_manager/app/app.router.dart';
@ -51,7 +51,7 @@ class HomeViewModel extends BaseViewModel {
_toast.showBottom('homeView.installingMessage'); _toast.showBottom('homeView.installingMessage');
final File? managerApk = await _managerAPI.downloadManager(); final File? managerApk = await _managerAPI.downloadManager();
if (managerApk != null) { if (managerApk != null) {
await AppInstaller.installApk(managerApk.path); await InstallPlugin.installApk(managerApk.path);
} else { } else {
_toast.showBottom('homeView.errorDownloadMessage'); _toast.showBottom('homeView.errorDownloadMessage');
} }
@ -72,7 +72,7 @@ class HomeViewModel extends BaseViewModel {
_toast.showBottom('homeView.installingMessage'); _toast.showBottom('homeView.installingMessage');
final File? managerApk = await _managerAPI.downloadManager(); final File? managerApk = await _managerAPI.downloadManager();
if (managerApk != null) { if (managerApk != null) {
await AppInstaller.installApk(managerApk.path); await InstallPlugin.installApk(managerApk.path);
} else { } else {
_toast.showBottom('homeView.errorDownloadMessage'); _toast.showBottom('homeView.errorDownloadMessage');
} }
@ -272,7 +272,7 @@ class HomeViewModel extends BaseViewModel {
child: CustomMaterialButton( child: CustomMaterialButton(
label: I18nText('updateButton'), label: I18nText('updateButton'),
onPressed: () async { onPressed: () async {
await AppInstaller.installApk( await InstallPlugin.installApk(
downloadedApk!.path, downloadedApk!.path,
); );
}, },
@ -318,7 +318,7 @@ class HomeViewModel extends BaseViewModel {
// UILocalNotificationDateInterpretation.absoluteTime, // UILocalNotificationDateInterpretation.absoluteTime,
// ); // );
_toast.showBottom('homeView.installingMessage'); _toast.showBottom('homeView.installingMessage');
await AppInstaller.installApk(managerApk.path); await InstallPlugin.installApk(managerApk.path);
} else { } else {
_toast.showBottom('homeView.errorDownloadMessage'); _toast.showBottom('homeView.errorDownloadMessage');
} }

View File

@ -13,58 +13,68 @@ class NavigationView extends StatelessWidget {
return ViewModelBuilder<NavigationViewModel>.reactive( return ViewModelBuilder<NavigationViewModel>.reactive(
onViewModelReady: (model) => model.initialize(context), onViewModelReady: (model) => model.initialize(context),
viewModelBuilder: () => locator<NavigationViewModel>(), viewModelBuilder: () => locator<NavigationViewModel>(),
builder: (context, model, child) => Scaffold( builder: (context, model, child) => WillPopScope(
body: PageTransitionSwitcher( onWillPop: () async {
duration: const Duration(milliseconds: 400), if (model.currentIndex == 0) {
transitionBuilder: ( return true;
Widget child, } else {
Animation<double> animation, model.setIndex(0);
Animation<double> secondaryAnimation, return false;
) { }
return FadeThroughTransition( },
animation: animation, child: Scaffold(
secondaryAnimation: secondaryAnimation, body: PageTransitionSwitcher(
fillColor: Theme.of(context).colorScheme.surface, duration: const Duration(milliseconds: 400),
child: child, transitionBuilder: (
); Widget child,
}, Animation<double> animation,
child: model.getViewForIndex(model.currentIndex), Animation<double> secondaryAnimation,
), ) {
bottomNavigationBar: NavigationBar( return FadeThroughTransition(
onDestinationSelected: model.setIndex, animation: animation,
selectedIndex: model.currentIndex, secondaryAnimation: secondaryAnimation,
destinations: <Widget>[ fillColor: Theme.of(context).colorScheme.surface,
NavigationDestination( child: child,
icon: model.isIndexSelected(0) );
? const Icon(Icons.dashboard) },
: const Icon(Icons.dashboard_outlined), child: model.getViewForIndex(model.currentIndex),
label: FlutterI18n.translate( ),
context, bottomNavigationBar: NavigationBar(
'navigationView.dashboardTab', onDestinationSelected: model.setIndex,
selectedIndex: model.currentIndex,
destinations: <Widget>[
NavigationDestination(
icon: model.isIndexSelected(0)
? const Icon(Icons.dashboard)
: const Icon(Icons.dashboard_outlined),
label: FlutterI18n.translate(
context,
'navigationView.dashboardTab',
),
tooltip: '',
), ),
tooltip: '', NavigationDestination(
), icon: model.isIndexSelected(1)
NavigationDestination( ? const Icon(Icons.build)
icon: model.isIndexSelected(1) : const Icon(Icons.build_outlined),
? const Icon(Icons.build) label: FlutterI18n.translate(
: const Icon(Icons.build_outlined), context,
label: FlutterI18n.translate( 'navigationView.patcherTab',
context, ),
'navigationView.patcherTab', tooltip: '',
), ),
tooltip: '', NavigationDestination(
), icon: model.isIndexSelected(2)
NavigationDestination( ? const Icon(Icons.settings)
icon: model.isIndexSelected(2) : const Icon(Icons.settings_outlined),
? const Icon(Icons.settings) label: FlutterI18n.translate(
: const Icon(Icons.settings_outlined), context,
label: FlutterI18n.translate( 'navigationView.settingsTab',
context, ),
'navigationView.settingsTab', tooltip: '',
), ),
tooltip: '', ],
), ),
],
), ),
), ),
); );

View File

@ -166,7 +166,6 @@ class _PatchesSelectorViewState extends State<PatchesSelectorView> {
(patch) => PatchItem( (patch) => PatchItem(
name: patch.name, name: patch.name,
simpleName: patch.getSimpleName(), simpleName: patch.getSimpleName(),
version: patch.version,
description: patch.description, description: patch.description,
packageVersion: model.getAppVersion(), packageVersion: model.getAppVersion(),
supportedPackageVersions: supportedPackageVersions:

View File

@ -93,7 +93,9 @@ class SManageApiUrl extends BaseViewModel {
onPressed: () { onPressed: () {
_managerAPI.setApiUrl(''); _managerAPI.setApiUrl('');
_toast.showBottom('settingsView.restartAppForChanges'); _toast.showBottom('settingsView.restartAppForChanges');
Navigator.of(context).pop(); Navigator.of(context)
..pop()
..pop();
}, },
) )
], ],

View File

@ -48,7 +48,7 @@ class SettingsViewModel extends BaseViewModel {
void deleteKeystore() { void deleteKeystore() {
_managerAPI.deleteKeystore(); _managerAPI.deleteKeystore();
_toast.showBottom('settingsView.deletedKeystore'); _toast.showBottom('settingsView.regeneratedKeystore');
notifyListeners(); notifyListeners();
} }

View File

@ -84,12 +84,16 @@ class _InstalledAppItemState extends State<InstalledAppItem> {
}, },
), ),
const SizedBox(width: 4), const SizedBox(width: 4),
Text( Flexible(
widget.patchesCount == 1 child: Text(
? '${widget.patchesCount} patch' widget.patchesCount == 1
: '${widget.patchesCount} patches', ? '${widget.patchesCount} patch'
style: TextStyle( : '${widget.patchesCount} patches',
color: Theme.of(context).colorScheme.secondary, maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: Theme.of(context).colorScheme.secondary,
),
), ),
), ),
], ],

View File

@ -78,12 +78,16 @@ class _NotInstalledAppItem extends State<NotInstalledAppItem> {
}, },
), ),
const SizedBox(width: 4), const SizedBox(width: 4),
Text( Flexible(
widget.patchesCount == 1 child: Text(
? '${widget.patchesCount} patch' widget.patchesCount == 1
: '${widget.patchesCount} patches', ? '${widget.patchesCount} patch'
style: TextStyle( : '${widget.patchesCount} patches',
color: Theme.of(context).colorScheme.secondary, maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: Theme.of(context).colorScheme.secondary,
),
), ),
), ),
], ],

View File

@ -1,61 +1,96 @@
import 'package:device_apps/device_apps.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_i18n/flutter_i18n.dart'; import 'package:flutter_i18n/flutter_i18n.dart';
import 'package:revanced_manager/app/app.locator.dart'; import 'package:revanced_manager/app/app.locator.dart';
import 'package:revanced_manager/models/patched_application.dart'; import 'package:revanced_manager/models/patched_application.dart';
import 'package:revanced_manager/services/manager_api.dart';
import 'package:revanced_manager/ui/views/home/home_viewmodel.dart'; import 'package:revanced_manager/ui/views/home/home_viewmodel.dart';
import 'package:revanced_manager/ui/widgets/shared/application_item.dart'; import 'package:revanced_manager/ui/widgets/shared/application_item.dart';
import 'package:revanced_manager/ui/widgets/shared/custom_card.dart'; import 'package:revanced_manager/ui/widgets/shared/custom_card.dart';
//ignore: must_be_immutable
class InstalledAppsCard extends StatelessWidget { class InstalledAppsCard extends StatelessWidget {
InstalledAppsCard({Key? key}) : super(key: key); InstalledAppsCard({Key? key}) : super(key: key);
final List<PatchedApplication> apps = List<PatchedApplication> apps = locator<HomeViewModel>().patchedInstalledApps;
locator<HomeViewModel>().patchedInstalledApps; final ManagerAPI _managerAPI = locator<ManagerAPI>();
List<PatchedApplication> patchedApps = [];
Future _getApps() async {
if (apps.isNotEmpty) {
patchedApps = [...apps];
for (final element in apps) {
await DeviceApps.getApp(element.packageName).then((value) {
if (element.version != value?.versionName) {
patchedApps.remove(element);
}
});
}
if (apps.length != patchedApps.length) {
await _managerAPI.setPatchedApps(patchedApps);
apps.clear();
apps = [...patchedApps];
}
}
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return apps.isEmpty return FutureBuilder(
? CustomCard( future: _getApps(),
child: Center( builder: (context, snapshot) {
child: Column( if (snapshot.connectionState == ConnectionState.done) {
children: <Widget>[ return apps.isEmpty
Icon( ? CustomCard(
size: 40, child: Center(
Icons.file_download_off, child: Column(
color: Theme.of(context).colorScheme.secondary, children: <Widget>[
), Icon(
const SizedBox(height: 16), size: 40,
I18nText( Icons.file_download_off,
'homeView.noInstallations', color: Theme.of(context).colorScheme.secondary,
child: Text( ),
'', const SizedBox(height: 16),
textAlign: TextAlign.center, I18nText(
style: Theme.of(context).textTheme.titleMedium!.copyWith( 'homeView.noInstallations',
color: Theme.of(context).colorScheme.secondary, child: Text(
'',
textAlign: TextAlign.center,
style: Theme.of(context)
.textTheme
.titleMedium!
.copyWith(
color:
Theme.of(context).colorScheme.secondary,
),
), ),
)
],
), ),
)
],
),
),
)
: ListView(
shrinkWrap: true,
padding: EdgeInsets.zero,
physics: const NeverScrollableScrollPhysics(),
children: apps
.map(
(app) => ApplicationItem(
icon: app.icon,
name: app.name,
patchDate: app.patchDate,
changelog: app.changelog,
isUpdatableApp: false,
onPressed: () =>
locator<HomeViewModel>().navigateToAppInfo(app),
), ),
) )
.toList(), : ListView(
); shrinkWrap: true,
padding: EdgeInsets.zero,
physics: const NeverScrollableScrollPhysics(),
children: apps
.map(
(app) => ApplicationItem(
icon: app.icon,
name: app.name,
patchDate: app.patchDate,
changelog: app.changelog,
isUpdatableApp: false,
onPressed: () =>
locator<HomeViewModel>().navigateToAppInfo(app),
),
)
.toList(),
);
} else {
return const Center(child: CircularProgressIndicator());
}
},
);
} }
} }

View File

@ -59,7 +59,7 @@ class PatchSelectorCard extends StatelessWidget {
String _getPatchesSelection() { String _getPatchesSelection() {
String text = ''; String text = '';
for (final Patch p in locator<PatcherViewModel>().selectedPatches) { for (final Patch p in locator<PatcherViewModel>().selectedPatches) {
text += '\u2022 ${p.getSimpleName()} (v${p.version})\n'; text += '\u2022 ${p.getSimpleName()}\n';
} }
return text.substring(0, text.length - 1); return text.substring(0, text.length - 1);
} }

View File

@ -14,7 +14,6 @@ class PatchItem extends StatefulWidget {
required this.name, required this.name,
required this.simpleName, required this.simpleName,
required this.description, required this.description,
required this.version,
required this.packageVersion, required this.packageVersion,
required this.supportedPackageVersions, required this.supportedPackageVersions,
required this.isUnsupported, required this.isUnsupported,
@ -25,7 +24,6 @@ class PatchItem extends StatefulWidget {
final String name; final String name;
final String simpleName; final String simpleName;
final String description; final String description;
final String version;
final String packageVersion; final String packageVersion;
final List<String> supportedPackageVersions; final List<String> supportedPackageVersions;
final bool isUnsupported; final bool isUnsupported;
@ -90,14 +88,6 @@ class _PatchItemState extends State<PatchItem> {
), ),
], ],
), ),
const SizedBox(height: 1),
Text(
widget.version,
style: TextStyle(
fontSize: 14,
color: Theme.of(context).colorScheme.secondary,
),
),
const SizedBox(height: 4), const SizedBox(height: 4),
Text( Text(
widget.description, widget.description,

View File

@ -28,7 +28,7 @@ class SAdvancedSection extends StatelessWidget {
ListTile( ListTile(
contentPadding: const EdgeInsets.symmetric(horizontal: 20.0), contentPadding: const EdgeInsets.symmetric(horizontal: 20.0),
title: I18nText( title: I18nText(
'settingsView.deleteKeystoreLabel', 'settingsView.regenerateKeystoreLabel',
child: const Text( child: const Text(
'', '',
style: TextStyle( style: TextStyle(
@ -37,7 +37,7 @@ class SAdvancedSection extends StatelessWidget {
), ),
), ),
), ),
subtitle: I18nText('settingsView.deleteKeystoreHint'), subtitle: I18nText('settingsView.regenerateKeystoreHint'),
onTap: () => _showDeleteKeystoreDialog(context), onTap: () => _showDeleteKeystoreDialog(context),
), ),
ListTile( ListTile(
@ -78,11 +78,9 @@ class SAdvancedSection extends StatelessWidget {
return showDialog( return showDialog(
context: context, context: context,
builder: (context) => AlertDialog( builder: (context) => AlertDialog(
title: I18nText('warning'), title: I18nText('settingsView.regenerateKeystoreDialogTitle'),
backgroundColor: Theme.of(context).colorScheme.secondaryContainer, backgroundColor: Theme.of(context).colorScheme.secondaryContainer,
content: I18nText( content: I18nText('settingsView.regenerateKeystoreDialogText'),
'settingsView.deleteKeystoreDialogText',
),
actions: <Widget>[ actions: <Widget>[
CustomMaterialButton( CustomMaterialButton(
isFilled: false, isFilled: false,

View File

@ -73,10 +73,12 @@ class SExportSection extends StatelessWidget {
), ),
), ),
subtitle: I18nText('settingsView.importKeystoreHint'), subtitle: I18nText('settingsView.importKeystoreHint'),
onTap: () { onTap: () async{
_settingsViewModel.importKeystore(); await _settingsViewModel.importKeystore();
final sManageKeystorePassword = SManageKeystorePassword(); final sManageKeystorePassword = SManageKeystorePassword();
sManageKeystorePassword.showKeystoreDialog(context); if(context.mounted){
sManageKeystorePassword.showKeystoreDialog(context);
}
}, },
), ),
ListTile( ListTile(
@ -102,7 +104,7 @@ class SExportSection extends StatelessWidget {
return showDialog( return showDialog(
context: context, context: context,
builder: (context) => AlertDialog( builder: (context) => AlertDialog(
title: I18nText('warning'), title: I18nText('settingsView.resetStoredPatchesDialogTitle'),
backgroundColor: Theme.of(context).colorScheme.secondaryContainer, backgroundColor: Theme.of(context).colorScheme.secondaryContainer,
content: I18nText( content: I18nText(
'settingsView.resetStoredPatchesDialogText', 'settingsView.resetStoredPatchesDialogText',

View File

@ -1,17 +1,16 @@
name: revanced_manager name: revanced_manager
description: Patch your favourite apps, right on your device. description: Patch your favorite apps, right on your device.
homepage: https://github.com/revanced/revanced-manager homepage: https://github.com/revanced/revanced-manager
publish_to: 'none' publish_to: 'none'
version: 1.4.0+100400000 version: 1.5.1+100400005
environment: environment:
sdk: '>=3.0.0 <4.0.0' sdk: '>=3.0.0 <4.0.0'
dependencies: dependencies:
animations: ^2.0.7 animations: ^2.0.7
app_installer: ^1.1.0
collection: ^1.17.0 collection: ^1.17.0
cross_connectivity: ^3.0.5 cross_connectivity: ^3.0.5
cr_file_saver: cr_file_saver:
@ -59,8 +58,8 @@ dependencies:
pull_to_refresh: ^2.0.0 pull_to_refresh: ^2.0.0
root: root:
git: git:
url: https://github.com/gokul1630/root url: https://github.com/EvadeMaster/root
ref: main ref: 82803aa40f63cddff81c3e4d27ce8ce3e7c83f60
share_extend: ^2.0.0 share_extend: ^2.0.0
shared_preferences: ^2.1.0 shared_preferences: ^2.1.0
skeletons: ^0.0.3 skeletons: ^0.0.3
@ -75,6 +74,7 @@ dependencies:
flutter_dotenv: ^5.0.2 flutter_dotenv: ^5.0.2
flutter_markdown: ^0.6.14 flutter_markdown: ^0.6.14
dio_cache_interceptor: ^3.4.0 dio_cache_interceptor: ^3.4.0
install_plugin: ^2.1.0
dev_dependencies: dev_dependencies:
json_serializable: ^6.6.1 json_serializable: ^6.6.1