Some fixes with boost/fav

This commit is contained in:
stom79 2019-01-12 09:26:18 +01:00
parent 273ae2a0d6
commit 95520e9133
8 changed files with 49 additions and 64 deletions

View File

@ -45,6 +45,7 @@ import es.dmoral.toasty.Toasty;
import fr.gouv.etalab.mastodon.R; import fr.gouv.etalab.mastodon.R;
import fr.gouv.etalab.mastodon.asynctasks.RetrieveContextAsyncTask; import fr.gouv.etalab.mastodon.asynctasks.RetrieveContextAsyncTask;
import fr.gouv.etalab.mastodon.asynctasks.UpdateAccountInfoAsyncTask; import fr.gouv.etalab.mastodon.asynctasks.UpdateAccountInfoAsyncTask;
import fr.gouv.etalab.mastodon.client.API;
import fr.gouv.etalab.mastodon.client.Entities.Account; import fr.gouv.etalab.mastodon.client.Entities.Account;
import fr.gouv.etalab.mastodon.client.Entities.Context; import fr.gouv.etalab.mastodon.client.Entities.Context;
import fr.gouv.etalab.mastodon.client.Entities.Error; import fr.gouv.etalab.mastodon.client.Entities.Error;
@ -126,8 +127,9 @@ public class ShowConversationActivity extends BaseActivity implements OnRetriev
Bundle b = intent.getExtras(); Bundle b = intent.getExtras();
assert b != null; assert b != null;
Status status = b.getParcelable("status"); Status status = b.getParcelable("status");
API.StatusAction statusAction = (API.StatusAction) b.getSerializable("action");
if( status != null) { if( status != null) {
statusListAdapter.notifyStatusWithActionChanged(status); statusListAdapter.notifyStatusWithActionChanged(statusAction, status);
} }
} }
}; };

View File

@ -167,7 +167,7 @@ public class WebviewConnectActivity extends BaseActivity {
String token = resobj.get("access_token").toString(); String token = resobj.get("access_token").toString();
String refresh_token = null; String refresh_token = null;
if( resobj.has("refresh_token")) if( resobj.has("refresh_token"))
refresh_token = resobj.get("access_token").toString(); refresh_token = resobj.get("refresh_token").toString();
SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedpreferences.edit(); SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString(Helper.PREF_KEY_OAUTH_TOKEN, token); editor.putString(Helper.PREF_KEY_OAUTH_TOKEN, token);

View File

@ -61,11 +61,7 @@ public class UpdateAccountInfoByIDAsyncTask extends AsyncTask<Void, Void, Void>
if( social == UpdateAccountInfoAsyncTask.SOCIAL.MASTODON) if( social == UpdateAccountInfoAsyncTask.SOCIAL.MASTODON)
account = new API(this.contextReference.get()).getAccount(userId); account = new API(this.contextReference.get()).getAccount(userId);
else if( social == UpdateAccountInfoAsyncTask.SOCIAL.PEERTUBE) { else if( social == UpdateAccountInfoAsyncTask.SOCIAL.PEERTUBE) {
try {
account = new PeertubeAPI(this.contextReference.get()).verifyCredentials();
} catch (HttpsConnection.HttpsConnectionException e) {
e.printStackTrace();
}
try { try {
account = new PeertubeAPI(this.contextReference.get()).verifyCredentials(); account = new PeertubeAPI(this.contextReference.get()).verifyCredentials();
account.setSocial("PEERTUBE"); account.setSocial("PEERTUBE");

View File

@ -20,6 +20,7 @@ import android.database.sqlite.SQLiteDatabase;
import android.os.Build; import android.os.Build;
import android.text.Html; import android.text.Html;
import android.text.SpannableString; import android.text.SpannableString;
import android.util.Log;
import com.google.common.io.ByteStreams; import com.google.common.io.ByteStreams;
@ -1419,6 +1420,7 @@ public class HttpsConnection {
postData.append('='); postData.append('=');
postData.append(String.valueOf(param.getValue())); postData.append(String.valueOf(param.getValue()));
} }
Log.v(Helper.TAG,"postData.toString(): " + postData.toString());
byte[] postDataBytes = postData.toString().getBytes("UTF-8"); byte[] postDataBytes = postData.toString().getBytes("UTF-8");
if (proxy != null) if (proxy != null)

View File

@ -856,15 +856,31 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On
} }
public void notifyNotificationWithActionChanged(Status status){ public void notifyNotificationWithActionChanged(API.StatusAction statusAction, Status status){
for (int i = 0; i < notificationsListAdapter.getItemCount(); i++) { for (int i = 0; i < notificationsListAdapter.getItemCount(); i++) {
if (notificationsListAdapter.getItemAt(i) != null && notificationsListAdapter.getItemAt(i).getType().toLowerCase().equals("mention") && notificationsListAdapter.getItemAt(i).getStatus() != null && notificationsListAdapter.getItemAt(i).getStatus().getId().equals(status.getId())) { if (notificationsListAdapter.getItemAt(i) != null && notificationsListAdapter.getItemAt(i).getType().toLowerCase().equals("mention") && notificationsListAdapter.getItemAt(i).getStatus() != null && notificationsListAdapter.getItemAt(i).getStatus().getId().equals(status.getId())) {
try { try {
if( notifications.get(i).getStatus() != null){ if( notifications.get(i).getStatus() != null){
int favCount = notifications.get(i).getStatus().getFavourites_count();
int boostCount = notifications.get(i).getStatus().getReblogs_count();
if( statusAction == API.StatusAction.REBLOG)
boostCount++;
else if( statusAction == API.StatusAction.UNREBLOG)
boostCount--;
else if( statusAction == API.StatusAction.FAVOURITE)
favCount++;
else if( statusAction == API.StatusAction.UNFAVOURITE)
favCount--;
if( boostCount < 0 )
boostCount = 0;
if( favCount < 0 )
favCount = 0;
notifications.get(i).getStatus().setFavourited(status.isFavourited()); notifications.get(i).getStatus().setFavourited(status.isFavourited());
notifications.get(i).getStatus().setFavourites_count(status.getFavourites_count()); notifications.get(i).getStatus().setFavourites_count(favCount);
notifications.get(i).getStatus().setReblogged(status.isReblogged()); notifications.get(i).getStatus().setReblogged(status.isReblogged());
notifications.get(i).getStatus().setReblogs_count(status.getReblogs_count()); notifications.get(i).getStatus().setReblogs_count(boostCount);
} }
notificationsListAdapter.notifyItemChanged(i); notificationsListAdapter.notifyItemChanged(i);
} catch (Exception ignored) { } catch (Exception ignored) {

View File

@ -2626,55 +2626,6 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
position++; position++;
} }
} }
/*if( statusAction == API.StatusAction.REBLOG){
int position = 0;
for(Status status: statuses){
if( status.getId().equals(targetedId)) {
status.setReblogs_count(status.getReblogs_count() + 1);
statusListAdapter.notifyItemChanged(position);
break;
}
position++;
}
}else if( statusAction == API.StatusAction.UNREBLOG){
int position = 0;
for(Status status: statuses){
if( status.getId().equals(targetedId)) {
if( status.getReblogs_count() - 1 >= 0)
status.setReblogs_count(status.getReblogs_count() - 1);
statusListAdapter.notifyItemChanged(position);
SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
//Remove the status from cache also
try {
new StatusCacheDAO(context, db).remove(StatusCacheDAO.ARCHIVE_CACHE,status);
}catch (Exception ignored){}
break;
}
position++;
}
}else if( statusAction == API.StatusAction.FAVOURITE){
int position = 0;
for(Status status: statuses){
if( status.getId().equals(targetedId)) {
status.setFavourites_count(status.getFavourites_count() + 1);
statusListAdapter.notifyItemChanged(position);
break;
}
position++;
}
}else if( statusAction == API.StatusAction.UNFAVOURITE){
int position = 0;
for(Status status: statuses){
if( status.getId().equals(targetedId)) {
if( status.getFavourites_count() - 1 >= 0)
status.setFavourites_count(status.getFavourites_count() - 1);
statusListAdapter.notifyItemChanged(position);
break;
}
position++;
}
}*/
if( statusAction == API.StatusAction.PEERTUBEDELETECOMMENT){ if( statusAction == API.StatusAction.PEERTUBEDELETECOMMENT){
int position = 0; int position = 0;
for(Status status: statuses){ for(Status status: statuses){
@ -2700,15 +2651,29 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
} }
} }
public void notifyStatusWithActionChanged(Status status){ public void notifyStatusWithActionChanged(API.StatusAction statusAction, Status status){
for (int i = 0; i < statusListAdapter.getItemCount(); i++) { for (int i = 0; i < statusListAdapter.getItemCount(); i++) {
//noinspection ConstantConditions //noinspection ConstantConditions
if (statusListAdapter.getItemAt(i) != null && statusListAdapter.getItemAt(i).getId().equals(status.getId())) { if (statusListAdapter.getItemAt(i) != null && statusListAdapter.getItemAt(i).getId().equals(status.getId())) {
try { try {
int favCount = statuses.get(i).getFavourites_count();
int boostCount = statuses.get(i).getReblogs_count();
if( statusAction == API.StatusAction.REBLOG)
boostCount++;
else if( statusAction == API.StatusAction.UNREBLOG)
boostCount--;
else if( statusAction == API.StatusAction.FAVOURITE)
favCount++;
else if( statusAction == API.StatusAction.UNFAVOURITE)
favCount--;
if( boostCount < 0 )
boostCount = 0;
if( favCount < 0 )
favCount = 0;
statuses.get(i).setFavourited(status.isFavourited()); statuses.get(i).setFavourited(status.isFavourited());
statuses.get(i).setFavourites_count(status.getFavourites_count()); statuses.get(i).setFavourites_count(favCount);
statuses.get(i).setReblogged(status.isReblogged()); statuses.get(i).setReblogged(status.isReblogged());
statuses.get(i).setReblogs_count(status.getReblogs_count()); statuses.get(i).setReblogs_count(boostCount);
statusListAdapter.notifyItemChanged(i); statusListAdapter.notifyItemChanged(i);
} catch (Exception ignored) { } catch (Exception ignored) {
} }

View File

@ -46,6 +46,7 @@ import fr.gouv.etalab.mastodon.activities.MainActivity;
import fr.gouv.etalab.mastodon.asynctasks.RetrieveMissingNotificationsAsyncTask; import fr.gouv.etalab.mastodon.asynctasks.RetrieveMissingNotificationsAsyncTask;
import fr.gouv.etalab.mastodon.asynctasks.RetrieveNotificationsAsyncTask; import fr.gouv.etalab.mastodon.asynctasks.RetrieveNotificationsAsyncTask;
import fr.gouv.etalab.mastodon.asynctasks.UpdateAccountInfoAsyncTask; import fr.gouv.etalab.mastodon.asynctasks.UpdateAccountInfoAsyncTask;
import fr.gouv.etalab.mastodon.client.API;
import fr.gouv.etalab.mastodon.client.APIResponse; import fr.gouv.etalab.mastodon.client.APIResponse;
import fr.gouv.etalab.mastodon.client.Entities.Account; import fr.gouv.etalab.mastodon.client.Entities.Account;
import fr.gouv.etalab.mastodon.client.Entities.Notification; import fr.gouv.etalab.mastodon.client.Entities.Notification;
@ -143,8 +144,9 @@ public class DisplayNotificationsFragment extends Fragment implements OnRetrieve
Bundle b = intent.getExtras(); Bundle b = intent.getExtras();
assert b != null; assert b != null;
Status status = b.getParcelable("status"); Status status = b.getParcelable("status");
API.StatusAction statusAction = (API.StatusAction) b.getSerializable("action");
if( status != null) { if( status != null) {
notificationsListAdapter.notifyNotificationWithActionChanged(status); notificationsListAdapter.notifyNotificationWithActionChanged(statusAction, status);
} }
} }
}; };

View File

@ -51,6 +51,7 @@ import fr.gouv.etalab.mastodon.asynctasks.RetrieveFeedsAsyncTask;
import fr.gouv.etalab.mastodon.asynctasks.RetrieveMissingFeedsAsyncTask; import fr.gouv.etalab.mastodon.asynctasks.RetrieveMissingFeedsAsyncTask;
import fr.gouv.etalab.mastodon.asynctasks.RetrievePeertubeSearchAsyncTask; import fr.gouv.etalab.mastodon.asynctasks.RetrievePeertubeSearchAsyncTask;
import fr.gouv.etalab.mastodon.asynctasks.UpdateAccountInfoAsyncTask; import fr.gouv.etalab.mastodon.asynctasks.UpdateAccountInfoAsyncTask;
import fr.gouv.etalab.mastodon.client.API;
import fr.gouv.etalab.mastodon.client.APIResponse; import fr.gouv.etalab.mastodon.client.APIResponse;
import fr.gouv.etalab.mastodon.client.Entities.Account; import fr.gouv.etalab.mastodon.client.Entities.Account;
import fr.gouv.etalab.mastodon.client.Entities.Conversation; import fr.gouv.etalab.mastodon.client.Entities.Conversation;
@ -217,8 +218,9 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn
Bundle b = intent.getExtras(); Bundle b = intent.getExtras();
assert b != null; assert b != null;
Status status = b.getParcelable("status"); Status status = b.getParcelable("status");
API.StatusAction statusAction = (API.StatusAction) b.getSerializable("action");
if( status != null) { if( status != null) {
statusListAdapter.notifyStatusWithActionChanged(status); statusListAdapter.notifyStatusWithActionChanged(statusAction, status);
} }
} }
}; };