Fix backup online fav list to local

This commit is contained in:
小白-白 authored and tarsin committed 2022-11-20 09:09:36 +08:00
1 parent 2ca4a2af86
commit bfaba80d3b
4 files changed
+69 -48

No files matched your search

@@ -17,7 +17,6 @@
package com.hippo.ehviewer.ui.fragment;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.net.Uri;
@@ -36,15 +35,15 @@ import androidx.preference.Preference;
import com.hippo.app.BaseDialogBuilder;
import com.hippo.ehviewer.AppConfig;
import com.hippo.ehviewer.BuildConfig;
import com.hippo.ehviewer.client.data.FavListUrlBuilder;
import com.hippo.ehviewer.client.EhClient;
import com.hippo.ehviewer.client.EhRequest;
import com.hippo.ehviewer.client.parser.FavoritesParser;
import com.hippo.ehviewer.EhApplication;
import com.hippo.ehviewer.EhDB;
import com.hippo.ehviewer.GetText;
import com.hippo.ehviewer.R;
import com.hippo.ehviewer.Settings;
import com.hippo.ehviewer.client.EhClient;
import com.hippo.ehviewer.client.EhRequest;
import com.hippo.ehviewer.client.data.FavListUrlBuilder;
import com.hippo.ehviewer.client.parser.FavoritesParser;
import com.hippo.ehviewer.ui.scene.BaseScene;
import com.hippo.util.ExceptionUtils;
import com.hippo.util.IoThreadPoolExecutor;
@@ -59,7 +58,6 @@ import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
@@ -71,6 +69,8 @@ public class AdvancedFragment extends BasePreferenceFragment {
private static final String KEY_EXPORT_DATA = "export_data";
private static final String KEY_OPEN_BY_DEFAULT = "open_by_default";
private static final String KEY_BACKUP_FAVORITE = "backup_favorite";
private int favTotal;
private int favIndex;
ActivityResultLauncher<String> exportLauncher = registerForActivityResult(
new ActivityResultContracts.CreateDocument(),
@@ -238,8 +238,8 @@ public class AdvancedFragment extends BasePreferenceFragment {
appLanguage.setVisible(false);
Preference importData = findPreference(KEY_IMPORT_DATA);
Preference exportData = findPreference(KEY_EXPORT_DATA);
Preference openByDefault = findPreference(KEY_OPEN_BY_DEFAULT);
Preference backupFavorite = findPreference(KEY_BACKUP_FAVORITE);
Preference openByDefault = findPreference(KEY_OPEN_BY_DEFAULT);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) {
openByDefault.setVisible(false);
@@ -282,6 +282,14 @@ public class AdvancedFragment extends BasePreferenceFragment {
showTip(R.string.error_cant_find_activity, BaseScene.LENGTH_SHORT);
}
return true;
} else if (KEY_BACKUP_FAVORITE.equals(key)) {
try {
backupFavorite();
} catch (Exception e) {
ExceptionUtils.throwIfFatal(e);
showTip(R.string.settings_advanced_backup_favorite_failed, BaseScene.LENGTH_SHORT);
}
return true;
} else if (KEY_OPEN_BY_DEFAULT.equals(key)) {
try {
Intent intent = new Intent(android.provider.Settings.ACTION_APP_OPEN_BY_DEFAULT_SETTINGS,
@@ -293,26 +301,15 @@ public class AdvancedFragment extends BasePreferenceFragment {
startActivity(intent);
}
return true;
} else if (KEY_BACKUP_FAVORITE.equals(key)) {
try {
showTip(R.string.backup_favorite_start, BaseScene.LENGTH_SHORT);
backupFavorite();
} catch (Exception e) {
ExceptionUtils.throwIfFatal(e);
showTip(R.string.backup_favorite_failed, BaseScene.LENGTH_SHORT);
}
return true;
}
return false;
}
private void backupFavorite() {
AtomicInteger page = new AtomicInteger(0);
Context context = requireContext();
Activity activity = requireActivity();
EhClient mClient = EhApplication.getEhClient(context);
EhClient mClient = EhApplication.getEhClient(requireContext());
FavListUrlBuilder favListUrlBuilder = new FavListUrlBuilder();
// favListUrlBuilder.setNext(page.get());
favTotal = 0;
favIndex = 1;
EhRequest request = new EhRequest();
request.setMethod(EhClient.METHOD_GET_FAVORITES);
@@ -320,31 +317,53 @@ public class AdvancedFragment extends BasePreferenceFragment {
@Override
public void onSuccess(Object result) {
try {
FavoritesParser.Result result1 = (FavoritesParser.Result) result;
EhDB.putLocalFavorites(result1.galleryInfoList);
Log.d("LocalFavorites", "now backup page " + page.get());
if (!result1.galleryInfoList.isEmpty()) {
// favListUrlBuilder.setNext(page.incrementAndGet());
request.setArgs(favListUrlBuilder.build(), Settings.getShowJpnTitle());
mClient.execute(request);
FavoritesParser.Result favResult = (FavoritesParser.Result) result;
if (favResult.galleryInfoList.isEmpty()) {
showTip(R.string.settings_advanced_backup_favorite_nothing, BaseScene.LENGTH_SHORT);
} else {
showTip(R.string.backup_favorite_success, BaseScene.LENGTH_SHORT);
if (favTotal == 0 && favResult.countArray != null) {
int totalFav = 0;
for (int i = 0; i < 10; i++) {
totalFav = totalFav + favResult.countArray[i];
}
favTotal = (int) Math.ceil((double) totalFav / favResult.galleryInfoList.size());
}
String status = "(" + favIndex + "/" + favTotal + ")";
showTip(GetText.getString(R.string.settings_advanced_backup_favorite_start, status), BaseScene.LENGTH_SHORT);
Log.d("LocalFavorites", "now backup page " + status);
EhDB.putLocalFavorites(favResult.galleryInfoList);
if (favResult.nextPage != null) {
try {
Thread.sleep(Settings.getDownloadDelay());
} catch (InterruptedException e) {
e.printStackTrace();
}
favIndex ++;
favListUrlBuilder.setNext(favResult.nextPage);
request.setArgs(favListUrlBuilder.build(), Settings.getShowJpnTitle());
mClient.execute(request);
} else {
showTip(R.string.settings_advanced_backup_favorite_success, BaseScene.LENGTH_SHORT);
}
}
} catch (Exception e) {
showTip(R.string.backup_favorite_failed, BaseScene.LENGTH_SHORT);
showTip(R.string.settings_advanced_backup_favorite_failed, BaseScene.LENGTH_SHORT);
}
}
@Override
public void onFailure(Exception e) {
showTip(R.string.backup_favorite_failed, BaseScene.LENGTH_SHORT);
showTip(R.string.settings_advanced_backup_favorite_failed, BaseScene.LENGTH_SHORT);
}
@Override
public void onCancel() {
showTip(R.string.backup_favorite_failed, BaseScene.LENGTH_SHORT);
showTip(R.string.settings_advanced_backup_favorite_failed, BaseScene.LENGTH_SHORT);
}
});
request.setArgs(favListUrlBuilder.build(), Settings.getShowJpnTitle());
mClient.execute(request);
}
+6 -5
View File
@@ -555,6 +555,12 @@
<string name="settings_advanced_import_data">导入数据</string>
<string name="settings_advanced_import_data_summary">从外置存储器导入数据</string>
<string name="settings_advanced_import_data_successfully">导入数据成功</string>
<string name="settings_advanced_backup_favorite">备份收藏列表</string>
<string name="settings_advanced_backup_favorite_summary">备份云端收藏列表到本地</string>
<string name="settings_advanced_backup_favorite_start">正在备份收藏列表 %s</string>
<string name="settings_advanced_backup_favorite_nothing">没有可以备份的收藏列表</string>
<string name="settings_advanced_backup_favorite_success">备份收藏列表成功</string>
<string name="settings_advanced_backup_favorite_failed">备份收藏列表失败</string>
<string name="settings_about">关于</string>
<string name="settings_about_declaration_summary">EhViewer 与 E-Hentai.org 无任何联系</string>
@@ -764,10 +770,5 @@
<string name="passwd_wrong">密码错误</string>
<string name="passwd_cannot_be_empty">密码不能为空</string>
<string name="list_tile_thumb_size">详情模式下缩略图大小</string>
<string name="backup_favorite">备份收藏列表</string>
<string name="backup_favorite_summary">备份云端收藏列表到本地</string>
<string name="backup_favorite_failed">备份收藏列表失败</string>
<string name="backup_favorite_success">备份收藏列表成功</string>
<string name="backup_favorite_start">正在备份收藏列表</string>
<string name="account_name">账户</string>
</resources>
+6 -5
View File
@@ -606,6 +606,12 @@
<string name="settings_advanced_import_data">Import data</string>
<string name="settings_advanced_import_data_summary">Load data which were previously saved</string>
<string name="settings_advanced_import_data_successfully">Data imported successfully</string>
<string name="settings_advanced_backup_favorite">Backup favorite list</string>
<string name="settings_advanced_backup_favorite_summary">Backup remote favorite list to local</string>
<string name="settings_advanced_backup_favorite_start">Backing up favorite list %s</string>
<string name="settings_advanced_backup_favorite_nothing">Nothing to backup</string>
<string name="settings_advanced_backup_favorite_success">Backup favorite list success</string>
<string name="settings_advanced_backup_favorite_failed">Backup favorite list failed</string>
<string name="settings_about">About</string>
<string name="settings_about_declaration" translatable="false">EhViewer</string>
@@ -828,10 +834,5 @@
<string name="passwd_wrong">Password Wrong</string>
<string name="passwd_cannot_be_empty">Password can\'t be empty</string>
<string name="list_tile_thumb_size">Thumb size in thumb mode</string>
<string name="backup_favorite">Backup favorite list</string>
<string name="backup_favorite_summary">Backup remote favorite list to local</string>
<string name="backup_favorite_failed">Backup favorite list failed</string>
<string name="backup_favorite_success">backup favorite list success</string>
<string name="backup_favorite_start">Now starting backup favorite list</string>
<string name="account_name">Account</string>
</resources>
+6 -6
View File
@@ -98,15 +98,15 @@
android:title="@string/settings_advanced_import_data"
app:iconSpaceReserved="false" />
<Preference
android:key="backup_favorite"
android:summary="@string/settings_advanced_backup_favorite_summary"
android:title="@string/settings_advanced_backup_favorite"
app:iconSpaceReserved="false" />
<Preference
android:key="open_by_default"
android:title="@string/open_by_default"
app:iconSpaceReserved="false" />
<Preference
android:key="backup_favorite"
android:summary="@string/backup_favorite_summary"
android:title="@string/backup_favorite"
app:iconSpaceReserved="false" />
</PreferenceScreen>