summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortom79 <tschneider.ac@gmail.com>2019-05-25 18:58:31 +0200
committertom79 <tschneider.ac@gmail.com>2019-05-25 18:58:31 +0200
commit7d14a0ad8535143db9bcbb4f60fa87c3fd85edd9 (patch)
tree91cf18bd315ebdf2eab8e221cb4bbeb0e931bdfd
parentcc2caa3a66b91af312fa1d90bb40f188159112e5 (diff)
Allow to disable bookmark
-rw-r--r--app/src/main/java/app/fedilab/android/asynctasks/RetrieveFeedsAfterBookmarkAsyncTask.java1
-rw-r--r--app/src/main/java/app/fedilab/android/client/API.java54
-rw-r--r--app/src/main/java/app/fedilab/android/client/PeertubeAPI.java1
-rw-r--r--app/src/main/java/app/fedilab/android/fragments/DisplayStatusFragment.java18
-rw-r--r--app/src/main/java/app/fedilab/android/fragments/SettingsFragment.java13
-rw-r--r--app/src/main/java/app/fedilab/android/helper/Helper.java1
-rw-r--r--app/src/main/res/layout-sw600dp/fragment_settings.xml8
-rw-r--r--app/src/main/res/layout/fragment_settings.xml8
-rw-r--r--app/src/main/res/values/strings.xml1
9 files changed, 77 insertions, 28 deletions
diff --git a/app/src/main/java/app/fedilab/android/asynctasks/RetrieveFeedsAfterBookmarkAsyncTask.java b/app/src/main/java/app/fedilab/android/asynctasks/RetrieveFeedsAfterBookmarkAsyncTask.java
index 3e5bf8a02..41326ddac 100644
--- a/app/src/main/java/app/fedilab/android/asynctasks/RetrieveFeedsAfterBookmarkAsyncTask.java
+++ b/app/src/main/java/app/fedilab/android/asynctasks/RetrieveFeedsAfterBookmarkAsyncTask.java
@@ -21,6 +21,7 @@ import java.lang.ref.WeakReference;
import app.fedilab.android.client.API;
import app.fedilab.android.client.APIResponse;
+import app.fedilab.android.helper.Helper;
import app.fedilab.android.interfaces.OnRetrieveFeedsAfterBookmarkInterface;
diff --git a/app/src/main/java/app/fedilab/android/client/API.java b/app/src/main/java/app/fedilab/android/client/API.java
index 74185f3c2..408c787b0 100644
--- a/app/src/main/java/app/fedilab/android/client/API.java
+++ b/app/src/main/java/app/fedilab/android/client/API.java
@@ -1015,34 +1015,40 @@ public class API {
SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
statuses = new TimelineCacheDAO(context, db).get(max_id);
- if( statuses != null){
- Iterator<Status> i = statuses.iterator();
- List<String> ids = new ArrayList<>();
- while (i.hasNext()) {
- Status s = i.next();
- if( ids.contains(s.getId())) {
- i.remove();
- new TimelineCacheDAO(context, db).remove(s.getId());
- }else{
- ids.add(s.getId());
+ SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
+ boolean remember_position_home = sharedpreferences.getBoolean(Helper.SET_REMEMBER_POSITION_HOME, true);
+ //TODO: remove forced condition
+ if( remember_position_home ){
+ if( statuses != null){
+ Iterator<Status> i = statuses.iterator();
+ List<String> ids = new ArrayList<>();
+ while (i.hasNext()) {
+ Status s = i.next();
+ if( ids.contains(s.getId())) {
+ i.remove();
+ new TimelineCacheDAO(context, db).remove(s.getId());
+ }else{
+ ids.add(s.getId());
+ }
}
}
- }
-
- if( statuses == null){
- return getHomeTimeline(max_id);
- }else{
- if( statuses.size() > 0) {
- if( statuses.get(0).getId().matches("\\d+")){
- apiResponse.setSince_id(String.valueOf(Long.parseLong(statuses.get(0).getId())+1));
- apiResponse.setMax_id(String.valueOf(Long.parseLong(statuses.get(statuses.size() - 1).getId())-1));
- }else{
- apiResponse.setSince_id(statuses.get(0).getId());
- apiResponse.setMax_id(statuses.get(statuses.size() - 1).getId());
+ if( statuses == null){
+ return getHomeTimeline(max_id);
+ }else{
+ if( statuses.size() > 0) {
+ if( statuses.get(0).getId().matches("\\d+")){
+ apiResponse.setSince_id(String.valueOf(Long.parseLong(statuses.get(0).getId())+1));
+ apiResponse.setMax_id(String.valueOf(Long.parseLong(statuses.get(statuses.size() - 1).getId())-1));
+ }else{
+ apiResponse.setSince_id(statuses.get(0).getId());
+ apiResponse.setMax_id(statuses.get(statuses.size() - 1).getId());
+ }
}
+ apiResponse.setStatuses(statuses);
+ return apiResponse;
}
- apiResponse.setStatuses(statuses);
- return apiResponse;
+ }else{
+ return getHomeTimeline(max_id);
}
}
diff --git a/app/src/main/java/app/fedilab/android/client/PeertubeAPI.java b/app/src/main/java/app/fedilab/android/client/PeertubeAPI.java
index 5013383bc..15819ce9c 100644
--- a/app/src/main/java/app/fedilab/android/client/PeertubeAPI.java
+++ b/app/src/main/java/app/fedilab/android/client/PeertubeAPI.java
@@ -17,7 +17,6 @@ package app.fedilab.android.client;
import android.content.Context;
import android.content.SharedPreferences;
import android.database.sqlite.SQLiteDatabase;
-import android.util.Log;
import org.json.JSONArray;
import org.json.JSONException;
diff --git a/app/src/main/java/app/fedilab/android/fragments/DisplayStatusFragment.java b/app/src/main/java/app/fedilab/android/fragments/DisplayStatusFragment.java
index 98db8395a..68237849c 100644
--- a/app/src/main/java/app/fedilab/android/fragments/DisplayStatusFragment.java
+++ b/app/src/main/java/app/fedilab/android/fragments/DisplayStatusFragment.java
@@ -540,7 +540,10 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn
//Only for the Home timeline
if( type == RetrieveFeedsAsyncTask.Type.HOME && !firstTootsLoaded){
- asyncTask = new RetrieveFeedsAfterBookmarkAsyncTask(context, null, DisplayStatusFragment.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+ boolean remember_position_home = sharedpreferences.getBoolean(Helper.SET_REMEMBER_POSITION_HOME, true);
+ if( remember_position_home) {
+ asyncTask = new RetrieveFeedsAfterBookmarkAsyncTask(context, null, DisplayStatusFragment.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+ }
firstTootsLoaded = true;
}
//Let's deal with statuses
@@ -925,6 +928,7 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn
@Override
public void onRetrieveFeedsAfterBookmark(APIResponse apiResponse) {
+
if( statusListAdapter == null)
return;
if( apiResponse == null || (apiResponse.getError() != null && apiResponse.getError().getStatusCode() != 404) ){
@@ -937,10 +941,12 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn
return;
}
List<Status> statuses = apiResponse.getStatuses();
+
if( statuses == null || statuses.size() == 0 || this.statuses == null )
return;
//Find the position of toots between those already present
int position = 0;
+
if( position < this.statuses.size() && statuses.get(0).getCreated_at() != null && this.statuses.get(position).getCreated_at() != null) {
while (position < this.statuses.size() && statuses.get(0).getCreated_at().before(this.statuses.get(position).getCreated_at())) {
position++;
@@ -949,7 +955,9 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn
ArrayList<Status> tmpStatuses = new ArrayList<>();
for (Status tmpStatus : statuses) {
//Put the toot at its place in the list (id desc)
- if( !this.statuses.contains(tmpStatus) ) { //Element not already added
+ if (this.statuses.size() == 0){
+ tmpStatuses.add(tmpStatus);
+ }else if( tmpStatus.getCreated_at().after(this.statuses.get(0).getCreated_at())) { //Element not already added
//Mark status at new ones when their id is greater than the last read toot id
if (type == RetrieveFeedsAsyncTask.Type.HOME && lastReadTootDate != null && tmpStatus.getCreated_at().after(lastReadTootDate) ) {
tmpStatus.setNew(true);
@@ -1025,7 +1033,11 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn
if( !pagination) {
if (type == RetrieveFeedsAsyncTask.Type.HOME) {
if (context instanceof BaseMainActivity) {
- asyncTask = new RetrieveFeedsAsyncTask(context, type, initialBookMark, DisplayStatusFragment.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+ boolean remember_position_home = sharedpreferences.getBoolean(Helper.SET_REMEMBER_POSITION_HOME, true);
+ if(remember_position_home )
+ asyncTask = new RetrieveFeedsAsyncTask(context, type, initialBookMark, DisplayStatusFragment.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+ else
+ asyncTask = new RetrieveFeedsAsyncTask(context, type, null, DisplayStatusFragment.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
} else { //Most classical search will be done by this call
asyncTask = new RetrieveFeedsAsyncTask(context, type, null, DisplayStatusFragment.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
diff --git a/app/src/main/java/app/fedilab/android/fragments/SettingsFragment.java b/app/src/main/java/app/fedilab/android/fragments/SettingsFragment.java
index 3277466cc..15701a3ca 100644
--- a/app/src/main/java/app/fedilab/android/fragments/SettingsFragment.java
+++ b/app/src/main/java/app/fedilab/android/fragments/SettingsFragment.java
@@ -464,6 +464,19 @@ public class SettingsFragment extends Fragment {
}
});
+ boolean remember_position_home = sharedpreferences.getBoolean(Helper.SET_REMEMBER_POSITION_HOME, true);
+ final CheckBox set_remember_position = rootView.findViewById(R.id.set_remember_position);
+ set_remember_position.setChecked(remember_position_home);
+
+ set_remember_position.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ SharedPreferences.Editor editor = sharedpreferences.edit();
+ editor.putBoolean(Helper.SET_REMEMBER_POSITION_HOME, set_remember_position.isChecked());
+ editor.apply();
+ }
+ });
+
boolean old_direct_timeline = sharedpreferences.getBoolean(Helper.SET_OLD_DIRECT_TIMELINE, false);
final CheckBox set_old_direct_timeline = rootView.findViewById(R.id.set_old_direct_timeline);
set_old_direct_timeline.setChecked(old_direct_timeline);
diff --git a/app/src/main/java/app/fedilab/android/helper/Helper.java b/app/src/main/java/app/fedilab/android/helper/Helper.java
index e333e68a0..0568d54cf 100644
--- a/app/src/main/java/app/fedilab/android/helper/Helper.java
+++ b/app/src/main/java/app/fedilab/android/helper/Helper.java
@@ -328,6 +328,7 @@ public class Helper {
public static final String SET_LONG_PRESS_MEDIA = "set_long_press_media";
public static final String SET_DISPLAY_TIMELINE_IN_LIST = "set_display_timeline_in_list";
public static final String SET_ONION_SCHEME = "set_onion_scheme";
+ public static final String SET_REMEMBER_POSITION_HOME = "set_remember_position";
public static final int S_NO = 0;
static final int S_512KO = 1;
public static final int S_1MO = 2;
diff --git a/app/src/main/res/layout-sw600dp/fragment_settings.xml b/app/src/main/res/layout-sw600dp/fragment_settings.xml
index 6b5fe4c6b..9eaac67b9 100644
--- a/app/src/main/res/layout-sw600dp/fragment_settings.xml
+++ b/app/src/main/res/layout-sw600dp/fragment_settings.xml
@@ -99,6 +99,14 @@
</LinearLayout>
<CheckBox
+ android:id="@+id/set_remember_position"
+ android:layout_width="wrap_content"
+ android:layout_marginTop="@dimen/settings_checkbox_margin"
+ android:layout_marginBottom="@dimen/settings_checkbox_margin"
+ android:text="@string/set_remember_position"
+ android:layout_height="wrap_content" />
+
+ <CheckBox
android:id="@+id/set_old_direct_timeline"
android:layout_width="wrap_content"
android:layout_marginTop="@dimen/settings_checkbox_margin"
diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml
index b7d00cf56..140f022f2 100644
--- a/app/src/main/res/layout/fragment_settings.xml
+++ b/app/src/main/res/layout/fragment_settings.xml
@@ -103,6 +103,14 @@
</LinearLayout>
<CheckBox
+ android:id="@+id/set_remember_position"
+ android:layout_width="wrap_content"
+ android:layout_marginTop="@dimen/settings_checkbox_margin"
+ android:layout_marginBottom="@dimen/settings_checkbox_margin"
+ android:text="@string/set_remember_position"
+ android:layout_height="wrap_content" />
+
+ <CheckBox
android:id="@+id/set_old_direct_timeline"
android:layout_width="wrap_content"
android:layout_marginTop="@dimen/settings_checkbox_margin"
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 9d2867ed1..ff27585dd 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -949,6 +949,7 @@
<string name="display_timeline">Display timelines</string>
<string name="set_display_bot_icon">Mark bot accounts in toots</string>
<string name="add_tags">Manage tags</string>
+ <string name="set_remember_position">Remember the position in Home timeline</string>
<plurals name="number_of_vote">
<item quantity="one">%d vote</item>