bookmarks
This commit is contained in:
parent
528d7b20d2
commit
af79b1b1cd
|
@ -5017,6 +5017,11 @@ public class API {
|
|||
} catch (Exception e) {
|
||||
status.setFavourited(false);
|
||||
}
|
||||
if( resobj.has("bookmarked") && !resobj.isNull("bookmarked")){
|
||||
status.setBookmarked(true);
|
||||
}else{
|
||||
status.setBookmarked(false);
|
||||
}
|
||||
try {
|
||||
if (resobj.getJSONObject("renoteId") != null && !resobj.getJSONObject("renoteId").toString().equals("null"))
|
||||
status.setReblog(parseStatuses(context, resobj.getJSONObject("renote")));
|
||||
|
|
|
@ -1668,6 +1668,9 @@ public class Status implements Parcelable {
|
|||
}
|
||||
|
||||
public boolean isBookmarked() {
|
||||
if( this.getReblog() != null && this.getReblog().isBookmarked()){
|
||||
bookmarked = true;
|
||||
}
|
||||
return bookmarked;
|
||||
}
|
||||
|
||||
|
|
|
@ -1459,12 +1459,12 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
|
|||
});
|
||||
|
||||
holder.custom_feature_bookmark.setOnClickListener(view -> {
|
||||
bookmark(status);
|
||||
CrossActions.doCrossBookmark(context, status, statusListAdapter, true);
|
||||
status.setCustomFeaturesDisplayed(false);
|
||||
notifyStatusChanged(status);
|
||||
});
|
||||
holder.custom_feature_bookmark.setOnLongClickListener(view -> {
|
||||
CrossActions.doCrossBookmark(context, status, statusListAdapter);
|
||||
CrossActions.doCrossBookmark(context, status, statusListAdapter, false);
|
||||
status.setCustomFeaturesDisplayed(false);
|
||||
notifyStatusChanged(status);
|
||||
return false;
|
||||
|
@ -3095,7 +3095,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
|
|||
itemBookmark.getActionView().setOnLongClickListener(new View.OnLongClickListener() {
|
||||
@Override
|
||||
public boolean onLongClick(View v) {
|
||||
CrossActions.doCrossBookmark(context, status, statusListAdapter);
|
||||
CrossActions.doCrossBookmark(context, status, statusListAdapter, true);
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
@ -4188,45 +4188,6 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
|
|||
}
|
||||
|
||||
|
||||
private void bookmark(Status status) {
|
||||
|
||||
if (type != RetrieveFeedsAsyncTask.Type.CACHE_BOOKMARKS) {
|
||||
status.setBookmarked(!status.isBookmarked());
|
||||
try {
|
||||
final SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
|
||||
API.StatusAction doAction;
|
||||
if (status.isBookmarked()) {
|
||||
new StatusCacheDAO(context, db).insertStatus(StatusCacheDAO.BOOKMARK_CACHE, status);
|
||||
doAction = API.StatusAction.BOOKMARK;
|
||||
Toasty.success(context, context.getString(R.string.status_bookmarked), Toast.LENGTH_LONG).show();
|
||||
} else {
|
||||
new StatusCacheDAO(context, db).remove(StatusCacheDAO.BOOKMARK_CACHE, status);
|
||||
doAction = API.StatusAction.UNBOOKMARK;
|
||||
Toasty.success(context, context.getString(R.string.status_unbookmarked), Toast.LENGTH_LONG).show();
|
||||
}
|
||||
new PostActionAsyncTask(context, doAction, status.getId(), StatusListAdapter.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
notifyStatusChanged(status);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
Toasty.error(context, context.getString(R.string.toast_error), Toast.LENGTH_LONG).show();
|
||||
}
|
||||
} else {
|
||||
int position = 0;
|
||||
for (Status statustmp : statuses) {
|
||||
if (statustmp.getId().equals(status.getId())) {
|
||||
statuses.remove(status);
|
||||
statusListAdapter.notifyItemRemoved(position);
|
||||
final SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
|
||||
new StatusCacheDAO(context, db).remove(StatusCacheDAO.BOOKMARK_CACHE, statustmp);
|
||||
new PostActionAsyncTask(context, API.StatusAction.UNBOOKMARK, statustmp.getId(), StatusListAdapter.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
Toasty.success(context, context.getString(R.string.status_unbookmarked), Toast.LENGTH_LONG).show();
|
||||
break;
|
||||
}
|
||||
position++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onRetrieveFeeds(APIResponse apiResponse) {
|
||||
|
|
|
@ -480,10 +480,14 @@ public class CrossActions {
|
|||
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
}
|
||||
|
||||
public static void doCrossBookmark(final Context context, final Status status, StatusListAdapter statusListAdapter) {
|
||||
public static void doCrossBookmark(final Context context, Status status, StatusListAdapter statusListAdapter, boolean limitedToOwner) {
|
||||
List<Account> accounts = connectedAccounts(context, status, false);
|
||||
API.StatusAction doAction;
|
||||
if (accounts.size() == 1) {
|
||||
//Only bookmark the initial status
|
||||
if( status.getReblog() != null){
|
||||
status = status.getReblog();
|
||||
}
|
||||
if (accounts.size() == 1 || limitedToOwner) {
|
||||
status.setBookmarked(!status.isBookmarked());
|
||||
try {
|
||||
SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
|
||||
|
@ -496,7 +500,7 @@ public class CrossActions {
|
|||
new StatusCacheDAO(context, db).remove(StatusCacheDAO.BOOKMARK_CACHE, status);
|
||||
Toasty.success(context, context.getString(R.string.status_unbookmarked), Toast.LENGTH_LONG).show();
|
||||
}
|
||||
new PostActionAsyncTask(context, accounts.get(0), status, doAction, null).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
new PostActionAsyncTask(context, doAction, status.getId(), null).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
statusListAdapter.notifyStatusChanged(status);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
|
@ -518,6 +522,7 @@ public class CrossActions {
|
|||
dialog.dismiss();
|
||||
}
|
||||
});
|
||||
Status finalStatus = status;
|
||||
builderSingle.setAdapter(accountsSearchAdapter, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(final DialogInterface dialog, int which) {
|
||||
|
@ -534,7 +539,7 @@ public class CrossActions {
|
|||
@Override
|
||||
protected Void doInBackground(Void... voids) {
|
||||
API api = new API(contextReference.get(), account.getInstance(), account.getToken());
|
||||
APIResponse apiResponse = api.search(status.getUrl());
|
||||
APIResponse apiResponse = api.search(finalStatus.getUrl());
|
||||
response = apiResponse.getResults();
|
||||
return null;
|
||||
}
|
||||
|
@ -559,7 +564,7 @@ public class CrossActions {
|
|||
new StatusCacheDAO(contextReference.get(), db).remove(StatusCacheDAO.BOOKMARK_CACHE, statuses.get(0), account.getId(), account.getInstance());
|
||||
Toasty.success(contextReference.get(), contextReference.get().getString(R.string.status_unbookmarked), Toast.LENGTH_LONG).show();
|
||||
}
|
||||
new PostActionAsyncTask(context, account, status, doAction, null).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
new PostActionAsyncTask(context, account, finalStatus, doAction, null).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
statusListAdapter.notifyStatusChanged(statuses.get(0));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue