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