diff --git a/app/src/main/java/org/kiwix/kiwixmobile/data/local/KiwixDatabase.java b/app/src/main/java/org/kiwix/kiwixmobile/data/local/KiwixDatabase.java index 671063c0a..02aa4ebc0 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/data/local/KiwixDatabase.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/data/local/KiwixDatabase.java @@ -36,6 +36,7 @@ import org.kiwix.kiwixmobile.data.local.entity.LibraryDatabaseEntity; import org.kiwix.kiwixmobile.data.local.entity.NetworkLanguageDatabaseEntity; import org.kiwix.kiwixmobile.data.local.entity.RecentSearch; import org.kiwix.kiwixmobile.library.entity.LibraryNetworkEntity; +import org.kiwix.kiwixmobile.utils.UpdateUtils; import java.io.BufferedReader; import java.io.FileNotFoundException; @@ -52,7 +53,7 @@ import static org.kiwix.kiwixmobile.utils.Constants.TAG_KIWIX; @Singleton public class KiwixDatabase extends SquidDatabase { - private static final int VERSION = 16; + private static final int VERSION = 17; private final Context context; @Inject @@ -125,6 +126,8 @@ public class KiwixDatabase extends SquidDatabase { tryAddColumn(Bookmark.ZIM_FILE_PATH); tryAddColumn(Bookmark.FAVICON); migrateBookmarksVersion16(); + case 16: + new BookmarksDao(this).processBookmark(UpdateUtils::reformatProviderUrl); } return true; } diff --git a/app/src/main/java/org/kiwix/kiwixmobile/data/local/dao/BookmarksDao.java b/app/src/main/java/org/kiwix/kiwixmobile/data/local/dao/BookmarksDao.java index 21a84fab7..fae480508 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/data/local/dao/BookmarksDao.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/data/local/dao/BookmarksDao.java @@ -20,6 +20,7 @@ package org.kiwix.kiwixmobile.data.local.dao; import com.yahoo.squidb.data.SquidCursor; import com.yahoo.squidb.sql.Query; +import com.yahoo.squidb.sql.Update; import org.kiwix.kiwixmobile.data.ZimContentProvider; import org.kiwix.kiwixmobile.data.local.KiwixDatabase; @@ -107,4 +108,23 @@ public class BookmarksDao { kiwixDatabase.deleteWhere(Bookmark.class, Bookmark.BOOKMARK_URL.eq(bookmark.getBookmarkUrl()) .and(Bookmark.ZIM_ID.eq(bookmark.getZimId()))); } + + public void processBookmark(StringOperation operation) { + try (SquidCursor bookmarkCursor = kiwixDatabase.query(Bookmark.class, + Query.select(Bookmark.ID, Bookmark.BOOKMARK_URL))) { + while (bookmarkCursor.moveToNext()) { + String url = bookmarkCursor.get(Bookmark.BOOKMARK_URL); + url = operation.apply(url); + if (url != null) { + kiwixDatabase.update(Update.table(Bookmark.TABLE) + .where(Bookmark.ID.eq(bookmarkCursor.get(Bookmark.ID))) + .set(Bookmark.BOOKMARK_URL, url)); + } + } + } + } + + public interface StringOperation { + String apply(String string); + } } diff --git a/app/src/main/java/org/kiwix/kiwixmobile/main/MainActivity.java b/app/src/main/java/org/kiwix/kiwixmobile/main/MainActivity.java index 7927cdb1c..3f1b8131d 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/main/MainActivity.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/main/MainActivity.java @@ -141,6 +141,7 @@ import static org.kiwix.kiwixmobile.utils.Constants.TAG_CURRENT_TAB; import static org.kiwix.kiwixmobile.utils.Constants.TAG_FILE_SEARCHED; import static org.kiwix.kiwixmobile.utils.Constants.TAG_KIWIX; import static org.kiwix.kiwixmobile.utils.StyleUtils.dialogStyle; +import static org.kiwix.kiwixmobile.utils.UpdateUtils.reformatProviderUrl; public class MainActivity extends BaseActivity implements WebViewCallback, MainContract.View, BooksAdapter.OnItemClickListener { @@ -1604,11 +1605,11 @@ public class MainActivity extends BaseActivity implements WebViewCallback, JSONArray urls = new JSONArray(zimArticles); JSONArray positions = new JSONArray(zimPositions); int i = 0; - getCurrentWebView().loadUrl(urls.getString(i)); + getCurrentWebView().loadUrl(reformatProviderUrl(urls.getString(i))); getCurrentWebView().setScrollY(positions.getInt(i)); i++; for (; i < urls.length(); i++) { - newTab(urls.getString(i)); + newTab(reformatProviderUrl(urls.getString(i))); getCurrentWebView().setScrollY(positions.getInt(i)); } selectTab(currentTab); diff --git a/app/src/main/java/org/kiwix/kiwixmobile/utils/Constants.java b/app/src/main/java/org/kiwix/kiwixmobile/utils/Constants.java index a952e3ba1..cb19e9e7d 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/utils/Constants.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/utils/Constants.java @@ -17,6 +17,8 @@ */ package org.kiwix.kiwixmobile.utils; +import org.kiwix.kiwixmobile.BuildConfig; + public final class Constants { public static final String TAG_KIWIX = "kiwix"; @@ -125,4 +127,8 @@ public final class Constants { // Notification Channel Constants public static final String ONGOING_DOWNLOAD_CHANNEL_ID = "ongoing_downloads_channel_id"; + public static final String OLD_PROVIDER_DOMAIN = "org.kiwix.zim.base"; + + public static final String NEW_PROVIDER_DOMAIN = BuildConfig.APPLICATION_ID + ".zim.base"; + } diff --git a/app/src/main/java/org/kiwix/kiwixmobile/utils/UpdateUtils.java b/app/src/main/java/org/kiwix/kiwixmobile/utils/UpdateUtils.java new file mode 100644 index 000000000..1201d96eb --- /dev/null +++ b/app/src/main/java/org/kiwix/kiwixmobile/utils/UpdateUtils.java @@ -0,0 +1,10 @@ +package org.kiwix.kiwixmobile.utils; + +import static org.kiwix.kiwixmobile.utils.Constants.NEW_PROVIDER_DOMAIN; +import static org.kiwix.kiwixmobile.utils.Constants.OLD_PROVIDER_DOMAIN; + +public class UpdateUtils { + public static String reformatProviderUrl(String url) { + return url.replace(OLD_PROVIDER_DOMAIN, NEW_PROVIDER_DOMAIN); + } +}