diff --git a/app/src/main/java/org/kiwix/kiwixmobile/data/DataModule.java b/app/src/main/java/org/kiwix/kiwixmobile/data/DataModule.java index 0faca15cc..a5c049641 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/data/DataModule.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/data/DataModule.java @@ -1,16 +1,9 @@ package org.kiwix.kiwixmobile.data; -import org.kiwix.kiwixmobile.di.qualifiers.Computation; -import org.kiwix.kiwixmobile.di.qualifiers.IO; -import org.kiwix.kiwixmobile.di.qualifiers.MainThread; - import javax.inject.Singleton; import dagger.Module; import dagger.Provides; -import io.reactivex.Scheduler; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.schedulers.Schedulers; @Module public class DataModule { @@ -19,22 +12,4 @@ public class DataModule { public DataSource provideDataSource(Repository repository) { return repository; } - - @IO - @Provides - public Scheduler provideIoThread() { - return Schedulers.io(); - } - - @MainThread - @Provides - public Scheduler provideMainThread() { - return AndroidSchedulers.mainThread(); - } - - @Computation - @Provides - public Scheduler provideComputationThread() { - return Schedulers.computation(); - } } diff --git a/app/src/main/java/org/kiwix/kiwixmobile/data/Repository.java b/app/src/main/java/org/kiwix/kiwixmobile/data/Repository.java index 970629e46..a3f3de1b3 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/data/Repository.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/data/Repository.java @@ -10,8 +10,6 @@ import org.kiwix.kiwixmobile.library.entity.LibraryNetworkEntity; import org.kiwix.kiwixmobile.models.Language; import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; import java.util.List; import java.util.Locale; @@ -94,18 +92,9 @@ public class Repository implements DataSource { histories.add(0, null); } for (int position = 2; position < histories.size(); position++) { - if (history != null && histories.get(position) != null) { - - Calendar calendar1 = Calendar.getInstance(); - calendar1.setTime(new Date(history.getTimeStamp())); - - Calendar calendar2 = Calendar.getInstance(); - calendar2.setTime(new Date(histories.get(position).getTimeStamp())); - - if (calendar1.get(Calendar.YEAR) != calendar2.get(Calendar.YEAR) || - calendar1.get(Calendar.DAY_OF_YEAR) != calendar2.get(Calendar.DAY_OF_YEAR)) { - histories.add(position, null); - } + if (history != null && histories.get(position) != null && + !history.getDate().equals(histories.get(position).getDate())) { + histories.add(position, null); } history = histories.get(position); } diff --git a/app/src/main/java/org/kiwix/kiwixmobile/data/local/dao/HistoryDao.java b/app/src/main/java/org/kiwix/kiwixmobile/data/local/dao/HistoryDao.java index de2cd3e41..1aadd2e04 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/data/local/dao/HistoryDao.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/data/local/dao/HistoryDao.java @@ -1,5 +1,7 @@ package org.kiwix.kiwixmobile.data.local.dao; +import android.content.Context; + import com.yahoo.squidb.data.SquidCursor; import com.yahoo.squidb.sql.Query; @@ -7,22 +9,29 @@ import org.kiwix.kiwixmobile.data.ZimContentProvider; import org.kiwix.kiwixmobile.data.local.KiwixDatabase; import org.kiwix.kiwixmobile.data.local.entity.History; +import java.text.DateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.List; import javax.inject.Inject; public class HistoryDao { + private final Context context; private final KiwixDatabase kiwixDatabase; @Inject - HistoryDao(KiwixDatabase kiwixDatabase) { + HistoryDao(Context context, KiwixDatabase kiwixDatabase) { + this.context = context; this.kiwixDatabase = kiwixDatabase; } public void saveHistory(String file, String favicon, String url, String title, long timeStamp) { + DateFormat dateFormat = android.text.format.DateFormat.getMediumDateFormat(context); + String date = dateFormat.format(new Date(timeStamp)); + kiwixDatabase.deleteWhere(History.class, History.HISTORY_URL.eq(url).and(History.DATE.eq(date))); kiwixDatabase.persist(new History().setZimFile(file).setFavicon(favicon) - .setHistoryUrl(url).setHistoryTitle(title).setTimeStamp(timeStamp)); + .setHistoryUrl(url).setHistoryTitle(title).setTimeStamp(timeStamp).setDate(date)); } public List getHistoryList(boolean showHistoryCurrentBook) { @@ -35,6 +44,7 @@ public class HistoryDao { .query(History.class, query.orderBy(History.TIME_STAMP.desc()))) { while (historySquidCursor.moveToNext()) { History history = new History(); + history.setDate(historySquidCursor.get(History.DATE)); history.setFavicon(historySquidCursor.get(History.FAVICON)); history.setHistoryTitle(historySquidCursor.get(History.HISTORY_TITLE)); history.setHistoryUrl(historySquidCursor.get(History.HISTORY_URL)); diff --git a/app/src/main/java/org/kiwix/kiwixmobile/data/local/entity/HistorySpec.java b/app/src/main/java/org/kiwix/kiwixmobile/data/local/entity/HistorySpec.java index ca0bdbf85..09af9683c 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/data/local/entity/HistorySpec.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/data/local/entity/HistorySpec.java @@ -8,5 +8,6 @@ public class HistorySpec { public String favicon; public String historyUrl; public String historyTitle; + public String date; public long timeStamp; } diff --git a/app/src/main/java/org/kiwix/kiwixmobile/di/modules/ApplicationModule.java b/app/src/main/java/org/kiwix/kiwixmobile/di/modules/ApplicationModule.java index b4fc34f03..dd2156663 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/di/modules/ApplicationModule.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/di/modules/ApplicationModule.java @@ -21,14 +21,20 @@ import android.app.NotificationManager; import android.content.Context; import org.kiwix.kiwixmobile.KiwixApplication; +import org.kiwix.kiwixmobile.di.qualifiers.Computation; +import org.kiwix.kiwixmobile.di.qualifiers.IO; +import org.kiwix.kiwixmobile.di.qualifiers.MainThread; import org.kiwix.kiwixmobile.utils.BookUtils; +import org.kiwix.kiwixmobile.utils.LanguageUtils; import javax.inject.Singleton; import dagger.Module; import dagger.Provides; import dagger.android.AndroidInjectionModule; -import org.kiwix.kiwixmobile.utils.LanguageUtils; +import io.reactivex.Scheduler; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.schedulers.Schedulers; @Module(includes = {ActivityBindingModule.class, AndroidInjectionModule.class}) public class ApplicationModule { @@ -38,19 +44,45 @@ public class ApplicationModule { this.application = application; } - @Provides @Singleton Context provideApplicationContext() { + @Provides + @Singleton + Context provideApplicationContext() { return this.application; } - @Provides @Singleton NotificationManager provideNotificationManager(Context context) { + @Provides + @Singleton + NotificationManager provideNotificationManager(Context context) { return (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); } - @Provides @Singleton BookUtils provideBookUtils(LanguageUtils.LanguageContainer container) { + @Provides + @Singleton + BookUtils provideBookUtils(LanguageUtils.LanguageContainer container) { return new BookUtils(container); } - @Provides @Singleton LanguageUtils.LanguageContainer provideLanguageContainer(){ + @Provides + @Singleton + LanguageUtils.LanguageContainer provideLanguageContainer() { return new LanguageUtils.LanguageContainer(); } + + @IO + @Provides + public Scheduler provideIoThread() { + return Schedulers.io(); + } + + @MainThread + @Provides + public Scheduler provideMainThread() { + return AndroidSchedulers.mainThread(); + } + + @Computation + @Provides + public Scheduler provideComputationThread() { + return Schedulers.computation(); + } } diff --git a/app/src/main/java/org/kiwix/kiwixmobile/history/HistoryAdapter.java b/app/src/main/java/org/kiwix/kiwixmobile/history/HistoryAdapter.java index 9a2e7ef3b..267931bcc 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/history/HistoryAdapter.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/history/HistoryAdapter.java @@ -12,10 +12,7 @@ import android.widget.TextView; import org.kiwix.kiwixmobile.R; import org.kiwix.kiwixmobile.data.local.entity.History; -import java.text.DateFormat; -import java.util.Date; import java.util.List; -import java.util.Locale; import butterknife.BindView; import butterknife.ButterKnife; @@ -63,9 +60,7 @@ class HistoryAdapter extends RecyclerView.Adapter { item.itemView.setOnLongClickListener(v -> itemClickListener.onItemLongClick(item.favicon, history)); } else { - DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.getDefault()); - ((Category) holder).date.setText(dateFormat.format(new Date(historyList.get(position + 1) - .getTimeStamp()))); + ((Category) holder).date.setText(historyList.get(position + 1).getDate()); } } diff --git a/app/src/main/java/org/kiwix/kiwixmobile/main/KiwixWebViewClient.java b/app/src/main/java/org/kiwix/kiwixmobile/main/KiwixWebViewClient.java index ddf2e0857..4cb264389 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/main/KiwixWebViewClient.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/main/KiwixWebViewClient.java @@ -37,7 +37,6 @@ import org.kiwix.kiwixmobile.utils.StyleUtils; import java.util.HashMap; -import static org.kiwix.kiwixmobile.main.MainActivity.nightMode; import static org.kiwix.kiwixmobile.utils.Constants.CONTACT_EMAIL_ADDRESS; import static org.kiwix.kiwixmobile.utils.Constants.EXTRA_EXTERNAL_LINK; @@ -47,6 +46,7 @@ public class KiwixWebViewClient extends WebViewClient { put("epub", "application/epub+zip"); put("pdf", "application/pdf"); }}; + private final SharedPreferenceUtil sharedPreferenceUtil = new SharedPreferenceUtil(KiwixApplication.getInstance()); private View help; private WebViewCallback callback; @@ -113,7 +113,7 @@ public class KiwixWebViewClient extends WebViewClient { ); view.addView(help); ImageView welcome_image = help.findViewById(R.id.welcome_image); - if (nightMode) { + if (sharedPreferenceUtil.nightMode()) { welcome_image.setImageResource(R.drawable.kiwix_welcome_night); } else { welcome_image.setImageResource(R.drawable.kiwix_welcome); @@ -131,12 +131,7 @@ public class KiwixWebViewClient extends WebViewClient { private void inflateHomeView(WebView view) { LayoutInflater inflater = LayoutInflater.from(view.getContext()); help = inflater.inflate(R.layout.content_main, view, false); - if (nightMode) { - ImageView cardImage = help.findViewById(R.id.content_main_card_image); - cardImage.setImageResource(R.drawable.ic_home_kiwix_banner_night); - } callback.setHomePage(help); - SharedPreferenceUtil sharedPreferenceUtil = new SharedPreferenceUtil(KiwixApplication.getInstance()); if (sharedPreferenceUtil.nightMode()) { ImageView cardImage = help.findViewById(R.id.content_main_card_image); cardImage.setImageResource(R.drawable.ic_home_kiwix_banner_night);