From b3d19d752b318efdf2dbf59256144c1517bf2a68 Mon Sep 17 00:00:00 2001 From: Tsukatsuki Kanade Date: Mon, 17 Sep 2018 20:15:26 +0800 Subject: [PATCH] fix: update favoriteName after added favorite --- .../hippo/ehviewer/ui/CommonOperations.java | 41 ++++++++++--------- .../ehviewer/ui/scene/GalleryDetailScene.java | 6 ++- 2 files changed, 26 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/ui/CommonOperations.java b/app/src/main/java/com/hippo/ehviewer/ui/CommonOperations.java index 797834e6c..480f3cdba 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/CommonOperations.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/CommonOperations.java @@ -33,6 +33,7 @@ import com.hippo.ehviewer.Settings; import com.hippo.ehviewer.UrlOpener; import com.hippo.ehviewer.client.EhClient; import com.hippo.ehviewer.client.EhRequest; +import com.hippo.ehviewer.client.data.GalleryDetail; import com.hippo.ehviewer.client.data.GalleryInfo; import com.hippo.ehviewer.dao.DownloadLabel; import com.hippo.ehviewer.download.DownloadManager; @@ -185,37 +186,37 @@ public final class CommonOperations { public static void addToFavorites(final Activity activity, final GalleryInfo galleryInfo, final EhClient.Callback listener) { int slot = Settings.getDefaultFavSlot(); + String[] items = new String[11]; + items[0] = activity.getString(R.string.local_favorites); + String[] favCat = Settings.getFavCat(); + System.arraycopy(favCat, 0, items, 1, 10); if (slot >= -1 && slot <= 9) { doAddToFavorites(activity, galleryInfo, slot, listener); + updateGalleryDetail(galleryInfo, items[slot+1]); } else { - String[] items = new String[11]; - items[0] = activity.getString(R.string.local_favorites); - String[] favCat = Settings.getFavCat(); - System.arraycopy(favCat, 0, items, 1, 10); new ListCheckBoxDialogBuilder(activity, items, - new ListCheckBoxDialogBuilder.OnItemClickListener() { - @Override - public void onItemClick(ListCheckBoxDialogBuilder builder, AlertDialog dialog, int position) { - int slot = position - 1; - doAddToFavorites(activity, galleryInfo, slot, listener); - if (builder.isChecked()) { - Settings.putDefaultFavSlot(slot); - } else { - Settings.putDefaultFavSlot(Settings.INVALID_DEFAULT_FAV_SLOT); - } + (builder, dialog, position) -> { + int slot1 = position - 1; + doAddToFavorites(activity, galleryInfo, slot1, listener); + updateGalleryDetail(galleryInfo, items[position]); + if (builder.isChecked()) { + Settings.putDefaultFavSlot(slot1); + } else { + Settings.putDefaultFavSlot(Settings.INVALID_DEFAULT_FAV_SLOT); } }, activity.getString(R.string.remember_favorite_collection), false) .setTitle(R.string.add_favorites_dialog_title) - .setOnCancelListener(new DialogInterface.OnCancelListener() { - @Override - public void onCancel(DialogInterface dialog) { - listener.onCancel(); - } - }) + .setOnCancelListener(dialog -> listener.onCancel()) .show(); } } + private static void updateGalleryDetail(GalleryInfo galleryInfo, String favoriteName) { + if (galleryInfo instanceof GalleryDetail) { + ((GalleryDetail) galleryInfo).favoriteName = favoriteName; + } + } + public static void removeFromFavorites(Activity activity, GalleryInfo galleryInfo, final EhClient.Callback listener) { EhClient client = EhApplication.getEhClient(activity); diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java index e887dac71..d29e3087a 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java @@ -766,7 +766,11 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene if (gd.isFavorited || EhDB.containLocalFavorites(gd.gid)) { mHeart.setVisibility(View.VISIBLE); - mHeart.setText(gd.favoriteName); + if (gd.favoriteName == null || gd.favoriteName.isEmpty()) { + mHeart.setText(R.string.local_favorites); + } else { + mHeart.setText(gd.favoriteName); + } mHeartOutline.setVisibility(View.GONE); } else { mHeart.setVisibility(View.GONE);