Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,10 +70,9 @@ If you encounter issues or wish to help improve the project, please refer to the
> [!IMPORTANT]
> Bug reports are only accepted if they are based on the **latest debug build**.
>
> *Notice for Chinese speakers:*
> *致中文用户:*
>
> 为了提高沟通效率,本项目仅接受英文 Issue。请使用 [DeepL](https://www.deepl.com/zh/translator) 或其他翻译工具提交您的反馈。

> 为保障问题沟通与处理效率,本项目仅受理英文 Issue。请使用 [DeepL](https://www.deepl.com/zh/translator) 或其他翻译工具如各种AI将反馈内容译为英文后提交。
---

### Developer Resources
Expand Down
38 changes: 22 additions & 16 deletions app/src/main/java/org/lsposed/manager/repo/RepoLoader.java
Original file line number Diff line number Diff line change
Expand Up @@ -77,13 +77,16 @@ public boolean upgradable(long versionCode, String versionName) {
private final Set<RepoListener> listeners = ConcurrentHashMap.newKeySet();
private boolean repoLoaded = false;
private static final String originRepoUrl = "https://modules.lsposed.org/";
private static final String backupRepoUrl = "https://modules-blogcdn.lsposed.org/";

private static final String secondBackupRepoUrl = "https://modules-cloudflare.lsposed.org/";
private static final String backupRepoUrl = "https://backup.modules.lsposed.org/";
private static String repoUrl = originRepoUrl;
private final Resources resources = App.getInstance().getResources();
private final String[] channels = resources.getStringArray(R.array.update_channel_values);

private String getPreferredRepoUrl() {
var source = App.getPreferences().getString("repo_source", "SOURCE_ORIGIN");
return "SOURCE_BACKUP".equals(source) ? backupRepoUrl : originRepoUrl;
}

public boolean isRepoLoaded() {
return repoLoaded;
}
Expand All @@ -97,6 +100,11 @@ public static synchronized RepoLoader getInstance() {
}

synchronized public void loadRemoteData() {
loadRemoteData(getPreferredRepoUrl(), true);
}

synchronized private void loadRemoteData(String url, boolean allowFallback) {
repoUrl = url;
repoLoaded = false;
try {
try (var response = App.getOkHttpClient().newCall(new Request.Builder().url(repoUrl + "modules.json").build()).execute()) {
Expand All @@ -122,12 +130,8 @@ synchronized public void loadRemoteData() {
for (RepoListener listener : listeners) {
listener.onThrowable(e);
}
if (repoUrl.equals(originRepoUrl)) {
repoUrl = backupRepoUrl;
loadRemoteData();
} else if (repoUrl.equals(backupRepoUrl)) {
repoUrl = secondBackupRepoUrl;
loadRemoteData();
if (allowFallback) {
loadRemoteData(url.equals(originRepoUrl) ? backupRepoUrl : originRepoUrl, false);
}
}
}
Expand Down Expand Up @@ -248,16 +252,18 @@ else if (module.getLatestBetaReleaseTime() != null)
}

public void loadRemoteReleases(String packageName) {
App.getOkHttpClient().newCall(new Request.Builder().url(String.format(repoUrl + "module/%s.json", packageName)).build()).enqueue(new Callback() {
loadRemoteReleases(packageName, repoUrl, true);
}

private void loadRemoteReleases(String packageName, String url, boolean allowFallback) {
App.getOkHttpClient().newCall(new Request.Builder().url(String.format(url + "module/%s.json", packageName)).build()).enqueue(new Callback() {
@Override
public void onFailure(@NonNull Call call, @NonNull IOException e) {
Log.e(App.TAG, call.request().url() + e.getMessage());
if (repoUrl.equals(originRepoUrl)) {
repoUrl = backupRepoUrl;
loadRemoteReleases(packageName);
} else if (repoUrl.equals(backupRepoUrl)) {
repoUrl = secondBackupRepoUrl;
loadRemoteReleases(packageName);
if (allowFallback) {
String nextUrl = url.equals(originRepoUrl) ? backupRepoUrl : originRepoUrl;
repoUrl = nextUrl;
loadRemoteReleases(packageName, nextUrl, false);
} else {
for (RepoListener listener : listeners) {
listener.onThrowable(e);
Expand Down
3 changes: 3 additions & 0 deletions app/src/main/res/values-ar/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,9 @@
<string name="settings_enable_status_notification">إشعارات الحالة</string>
<string name="settings_enable_status_notification_summary">إظهار إشعار يمكنه فتح مدير الطفيليات</string>
<string name="settings_update_channel">قناة التحديث</string>
<string name="settings_repo_source">مصدر المستودع</string>
<string name="repo_source_origin">الافتراضي</string>
<string name="repo_source_backup">احتياطي</string>
<string name="update_channel_stable">مستقر</string>
<string name="update_channel_bate">تجريبي</string>
<string name="update_channel_nightly">البناء الليلي</string>
Expand Down
3 changes: 3 additions & 0 deletions app/src/main/res/values-es/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,9 @@
<string name="settings_enable_status_notification">Notificación de estado</string>
<string name="settings_enable_status_notification_summary">Mostrar una notificación que puede abrir el gestor de parásitos</string>
<string name="settings_update_channel">Actualizar canal</string>
<string name="settings_repo_source">Fuente del repositorio</string>
<string name="repo_source_origin">Predeterminado</string>
<string name="repo_source_backup">Respaldo</string>
<string name="update_channel_stable">Estable</string>
<string name="update_channel_bate">Beta</string>
<string name="update_channel_nightly">Construcción nocturna</string>
Expand Down
3 changes: 3 additions & 0 deletions app/src/main/res/values-fr/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,9 @@ JingMatrix</string>
<string name="settings_enable_status_notification">Notification d\'état</string>
<string name="settings_enable_status_notification_summary">Afficher une notification qui peut ouvrir le gestionnaire de parasites</string>
<string name="settings_update_channel">Canal de mise à jour</string>
<string name="settings_repo_source">Source du dépôt</string>
<string name="repo_source_origin">Par défaut</string>
<string name="repo_source_backup">Secours</string>
<string name="update_channel_stable">Stable</string>
<string name="update_channel_bate">Bêta</string>
<string name="update_channel_nightly">Alpha</string>
Expand Down
3 changes: 3 additions & 0 deletions app/src/main/res/values-ru/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,9 @@
<string name="settings_enable_status_notification">Уведомление о состоянии</string>
<string name="settings_enable_status_notification_summary">Показывать уведомление, через которое можно открыть parasitic-менеджер (т. е. LSPosed в скрытом режиме)</string>
<string name="settings_update_channel">Канал обновлений</string>
<string name="settings_repo_source">Источник репозитория</string>
<string name="repo_source_origin">По умолчанию</string>
<string name="repo_source_backup">Резервный</string>
<string name="update_channel_stable">Стабильные версии</string>
<string name="update_channel_bate">Бета-версии</string>
<string name="update_channel_nightly">Еженочные версии</string>
Expand Down
3 changes: 3 additions & 0 deletions app/src/main/res/values-zh-rCN/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,9 @@ JingMatrix</string>
<string name="settings_enable_status_notification">状态通知</string>
<string name="settings_enable_status_notification_summary">显示一个通知以打开寄生管理器</string>
<string name="settings_update_channel">模块更新通道</string>
<string name="settings_repo_source">仓库来源</string>
<string name="repo_source_origin">默认</string>
<string name="repo_source_backup">备用</string>
<string name="update_channel_stable">稳定版</string>
<string name="update_channel_bate">测试版</string>
<string name="update_channel_nightly">每夜版</string>
Expand Down
3 changes: 3 additions & 0 deletions app/src/main/res/values-zh-rHK/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,9 @@
<string name="settings_enable_status_notification">狀態通知</string>
<string name="settings_enable_status_notification_summary">顯示通知以便開啟寄生管理員</string>
<string name="settings_update_channel">更新頻道</string>
<string name="settings_repo_source">倉庫來源</string>
<string name="repo_source_origin">預設</string>
<string name="repo_source_backup">備援</string>
<string name="update_channel_stable">穩定版</string>
<string name="update_channel_bate">測試版</string>
<string name="update_channel_nightly">每夜構建</string>
Expand Down
3 changes: 3 additions & 0 deletions app/src/main/res/values-zh-rTW/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,9 @@
<string name="settings_enable_status_notification">狀態通知</string>
<string name="settings_enable_status_notification_summary">顯示通知以便開啟寄生管理員</string>
<string name="settings_update_channel">更新通道</string>
<string name="settings_repo_source">倉庫來源</string>
<string name="repo_source_origin">預設</string>
<string name="repo_source_backup">備援</string>
<string name="update_channel_stable">穩定版</string>
<string name="update_channel_bate">測試版</string>
<string name="update_channel_nightly">每夜構建</string>
Expand Down
10 changes: 10 additions & 0 deletions app/src/main/res/values/arrays.xml
Original file line number Diff line number Diff line change
Expand Up @@ -88,4 +88,14 @@
<item>CHANNEL_NIGHTLY</item>
</string-array>

<string-array name="repo_source_texts" translatable="false">
<item>@string/repo_source_origin</item>
<item>@string/repo_source_backup</item>
</string-array>

<string-array name="repo_source_values" translatable="false">
<item>SOURCE_ORIGIN</item>
<item>SOURCE_BACKUP</item>
</string-array>

</resources>
3 changes: 3 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,9 @@
<string name="settings_enable_status_notification">Status Notification</string>
<string name="settings_enable_status_notification_summary">Show a notification that can open parasitic manager</string>
<string name="settings_update_channel">Update channel</string>
<string name="settings_repo_source">Repository source</string>
<string name="repo_source_origin">Default</string>
<string name="repo_source_backup">Backup</string>
<string name="update_channel_stable">Stable</string>
<string name="update_channel_bate">Beta</string>
<string name="update_channel_nightly">Nightly build</string>
Expand Down
8 changes: 8 additions & 0 deletions app/src/main/res/xml/prefs.xml
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,14 @@
android:key="update_channel"
android:summary="%s"
android:title="@string/settings_update_channel" />
<rikka.preference.SimpleMenuPreference
android:defaultValue="SOURCE_ORIGIN"
android:entries="@array/repo_source_texts"
android:entryValues="@array/repo_source_values"
android:icon="@drawable/ic_outline_language_24"
android:key="repo_source"
android:summary="%s"
android:title="@string/settings_repo_source" />
</PreferenceCategory>

<PreferenceCategory android:title="@string/settings_backup_and_restore">
Expand Down