Bookmark API support
This commit is contained in:
parent
8775f4fe5a
commit
a1e0951cbf
|
@ -224,7 +224,9 @@ public class PostActionAsyncTask extends AsyncTask<Void, Void, Void> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPostExecute(Void result) {
|
protected void onPostExecute(Void result) {
|
||||||
|
if( listener != null) {
|
||||||
listener.onPostAction(statusCode, apiAction, targetedId, error);
|
listener.onPostAction(statusCode, apiAction, targetedId, error);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -141,6 +141,8 @@ public class API {
|
||||||
public enum StatusAction {
|
public enum StatusAction {
|
||||||
FAVOURITE,
|
FAVOURITE,
|
||||||
UNFAVOURITE,
|
UNFAVOURITE,
|
||||||
|
BOOKMARK,
|
||||||
|
UNBOOKMARK,
|
||||||
REBLOG,
|
REBLOG,
|
||||||
UNREBLOG,
|
UNREBLOG,
|
||||||
MUTE,
|
MUTE,
|
||||||
|
@ -2686,6 +2688,12 @@ public class API {
|
||||||
case UNFAVOURITE:
|
case UNFAVOURITE:
|
||||||
action = String.format("/statuses/%s/unfavourite", targetedId);
|
action = String.format("/statuses/%s/unfavourite", targetedId);
|
||||||
break;
|
break;
|
||||||
|
case BOOKMARK:
|
||||||
|
action = String.format("/statuses/%s/bookmark", targetedId);
|
||||||
|
break;
|
||||||
|
case UNBOOKMARK:
|
||||||
|
action = String.format("/statuses/%s/unbookmark", targetedId);
|
||||||
|
break;
|
||||||
case REBLOG:
|
case REBLOG:
|
||||||
action = String.format("/statuses/%s/reblog", targetedId);
|
action = String.format("/statuses/%s/reblog", targetedId);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -4189,17 +4189,22 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
|
||||||
|
|
||||||
|
|
||||||
private void bookmark(Status status) {
|
private void bookmark(Status status) {
|
||||||
|
|
||||||
if (type != RetrieveFeedsAsyncTask.Type.CACHE_BOOKMARKS) {
|
if (type != RetrieveFeedsAsyncTask.Type.CACHE_BOOKMARKS) {
|
||||||
status.setBookmarked(!status.isBookmarked());
|
status.setBookmarked(!status.isBookmarked());
|
||||||
try {
|
try {
|
||||||
final SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
|
final SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
|
||||||
|
API.StatusAction doAction;
|
||||||
if (status.isBookmarked()) {
|
if (status.isBookmarked()) {
|
||||||
new StatusCacheDAO(context, db).insertStatus(StatusCacheDAO.BOOKMARK_CACHE, status);
|
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();
|
Toasty.success(context, context.getString(R.string.status_bookmarked), Toast.LENGTH_LONG).show();
|
||||||
} else {
|
} else {
|
||||||
new StatusCacheDAO(context, db).remove(StatusCacheDAO.BOOKMARK_CACHE, status);
|
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();
|
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);
|
notifyStatusChanged(status);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
@ -4213,6 +4218,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
|
||||||
statusListAdapter.notifyItemRemoved(position);
|
statusListAdapter.notifyItemRemoved(position);
|
||||||
final SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
|
final SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
|
||||||
new StatusCacheDAO(context, db).remove(StatusCacheDAO.BOOKMARK_CACHE, statustmp);
|
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();
|
Toasty.success(context, context.getString(R.string.status_unbookmarked), Toast.LENGTH_LONG).show();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -482,18 +482,21 @@ public class CrossActions {
|
||||||
|
|
||||||
public static void doCrossBookmark(final Context context, final Status status, StatusListAdapter statusListAdapter) {
|
public static void doCrossBookmark(final Context context, final Status status, StatusListAdapter statusListAdapter) {
|
||||||
List<Account> accounts = connectedAccounts(context, status, false);
|
List<Account> accounts = connectedAccounts(context, status, false);
|
||||||
|
API.StatusAction doAction;
|
||||||
if (accounts.size() == 1) {
|
if (accounts.size() == 1) {
|
||||||
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();
|
||||||
if (status.isBookmarked()) {
|
if (status.isBookmarked()) {
|
||||||
|
doAction = API.StatusAction.BOOKMARK;
|
||||||
new StatusCacheDAO(context, db).insertStatus(StatusCacheDAO.BOOKMARK_CACHE, status);
|
new StatusCacheDAO(context, db).insertStatus(StatusCacheDAO.BOOKMARK_CACHE, status);
|
||||||
Toasty.success(context, context.getString(R.string.status_bookmarked), Toast.LENGTH_LONG).show();
|
Toasty.success(context, context.getString(R.string.status_bookmarked), Toast.LENGTH_LONG).show();
|
||||||
} else {
|
} else {
|
||||||
|
doAction = API.StatusAction.UNBOOKMARK;
|
||||||
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);
|
||||||
statusListAdapter.notifyStatusChanged(status);
|
statusListAdapter.notifyStatusChanged(status);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
@ -546,13 +549,17 @@ public class CrossActions {
|
||||||
if (statuses != null && statuses.size() > 0) {
|
if (statuses != null && statuses.size() > 0) {
|
||||||
final SQLiteDatabase db = Sqlite.getInstance(contextReference.get(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
|
final SQLiteDatabase db = Sqlite.getInstance(contextReference.get(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
|
||||||
app.fedilab.android.client.Entities.Status statusBookmarked = new StatusCacheDAO(contextReference.get(), db).getStatus(StatusCacheDAO.BOOKMARK_CACHE, statuses.get(0).getId(), account.getId(), account.getInstance());
|
app.fedilab.android.client.Entities.Status statusBookmarked = new StatusCacheDAO(contextReference.get(), db).getStatus(StatusCacheDAO.BOOKMARK_CACHE, statuses.get(0).getId(), account.getId(), account.getInstance());
|
||||||
|
API.StatusAction doAction;
|
||||||
if (statusBookmarked == null) {
|
if (statusBookmarked == null) {
|
||||||
|
doAction = API.StatusAction.BOOKMARK;
|
||||||
new StatusCacheDAO(contextReference.get(), db).insertStatus(StatusCacheDAO.BOOKMARK_CACHE, statuses.get(0), account.getId(), account.getInstance());
|
new StatusCacheDAO(contextReference.get(), db).insertStatus(StatusCacheDAO.BOOKMARK_CACHE, statuses.get(0), account.getId(), account.getInstance());
|
||||||
Toasty.success(contextReference.get(), contextReference.get().getString(R.string.status_bookmarked), Toast.LENGTH_LONG).show();
|
Toasty.success(contextReference.get(), contextReference.get().getString(R.string.status_bookmarked), Toast.LENGTH_LONG).show();
|
||||||
} else {
|
} else {
|
||||||
|
doAction = API.StatusAction.UNBOOKMARK;
|
||||||
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);
|
||||||
statusListAdapter.notifyStatusChanged(statuses.get(0));
|
statusListAdapter.notifyStatusChanged(statuses.get(0));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,6 @@
|
||||||
android:viewportWidth="24"
|
android:viewportWidth="24"
|
||||||
android:viewportHeight="24">
|
android:viewportHeight="24">
|
||||||
<path
|
<path
|
||||||
android:pathData="m15,12c2.21,0 4,-1.79 4,-4s-1.79,-4 -4,-4 -4,1.79 -4,4 1.79,4 4,4zM1,10v2h8v-2zM15,14c-2.67,0 -8,1.34 -8,4v2h16v-2c0,-2.66 -5.33,-4 -8,-4z"
|
android:pathData="m9.6992,12c-2.21,0 -4,-1.79 -4,-4s1.79,-4 4,-4c2.21,0 4,1.79 4,4s-1.79,4 -4,4zM22.3012,10v2.3752h-6.6017v-2.3752zM9.6992,14c2.67,0 8,1.34 8,4v2h-16v-2c0,-2.66 5.33,-4 8,-4z"
|
||||||
android:fillColor="#fff"/>
|
android:fillColor="#fff"/>
|
||||||
</vector>
|
</vector>
|
||||||
|
|
Loading…
Reference in New Issue