Fixes issue #70 - Click on the notification to display the account of the new follower

This commit is contained in:
stom79 2018-01-06 14:07:49 +01:00
parent ebe4b44e7c
commit fb407895ee
4 changed files with 19 additions and 2 deletions

View File

@ -107,6 +107,7 @@ import static fr.gouv.etalab.mastodon.helper.Helper.CHANGE_THEME_INTENT;
import static fr.gouv.etalab.mastodon.helper.Helper.CHANGE_USER_INTENT; import static fr.gouv.etalab.mastodon.helper.Helper.CHANGE_USER_INTENT;
import static fr.gouv.etalab.mastodon.helper.Helper.HOME_TIMELINE_INTENT; import static fr.gouv.etalab.mastodon.helper.Helper.HOME_TIMELINE_INTENT;
import static fr.gouv.etalab.mastodon.helper.Helper.INTENT_ACTION; import static fr.gouv.etalab.mastodon.helper.Helper.INTENT_ACTION;
import static fr.gouv.etalab.mastodon.helper.Helper.INTENT_TARGETED_ACCOUNT;
import static fr.gouv.etalab.mastodon.helper.Helper.NOTIFICATION_INTENT; import static fr.gouv.etalab.mastodon.helper.Helper.NOTIFICATION_INTENT;
import static fr.gouv.etalab.mastodon.helper.Helper.PREF_KEY_ID; import static fr.gouv.etalab.mastodon.helper.Helper.PREF_KEY_ID;
import static fr.gouv.etalab.mastodon.helper.Helper.changeDrawableColor; import static fr.gouv.etalab.mastodon.helper.Helper.changeDrawableColor;
@ -1030,6 +1031,13 @@ public abstract class BaseMainActivity extends BaseActivity
if( tabLayout.getTabAt(1) != null) if( tabLayout.getTabAt(1) != null)
//noinspection ConstantConditions //noinspection ConstantConditions
tabLayout.getTabAt(1).select(); tabLayout.getTabAt(1).select();
if( extras.getString(INTENT_TARGETED_ACCOUNT) != null ){
Intent intentShow = new Intent(BaseMainActivity.this, ShowAccountActivity.class);
Bundle b = new Bundle();
b.putString("accountId", extras.getString(INTENT_TARGETED_ACCOUNT));
intentShow.putExtras(b);
startActivity(intentShow);
}
}else if( extras.getInt(INTENT_ACTION) == HOME_TIMELINE_INTENT){ }else if( extras.getInt(INTENT_ACTION) == HOME_TIMELINE_INTENT){
changeUser(BaseMainActivity.this, userIdIntent, true); //Connects the account which is related to the notification changeUser(BaseMainActivity.this, userIdIntent, true); //Connects the account which is related to the notification
}else if( extras.getInt(INTENT_ACTION) == CHANGE_THEME_INTENT){ }else if( extras.getInt(INTENT_ACTION) == CHANGE_THEME_INTENT){

View File

@ -278,7 +278,7 @@ public class Helper {
public static final int SECONDES_BETWEEN_TRANSLATE = 30; public static final int SECONDES_BETWEEN_TRANSLATE = 30;
//Intent //Intent
public static final String INTENT_ACTION = "intent_action"; public static final String INTENT_ACTION = "intent_action";
public static final String INTENT_TARGETED_ACCOUNT = "intent_targeted_account";
//Receiver //Receiver
public static final String RECEIVE_DATA = "receive_data"; public static final String RECEIVE_DATA = "receive_data";
public static final String RECEIVE_FEDERATED_DATA = "receive_federated_data"; public static final String RECEIVE_FEDERATED_DATA = "receive_federated_data";

View File

@ -51,6 +51,7 @@ import fr.gouv.etalab.mastodon.sqlite.AccountDAO;
import fr.gouv.etalab.mastodon.sqlite.Sqlite; import fr.gouv.etalab.mastodon.sqlite.Sqlite;
import static fr.gouv.etalab.mastodon.helper.Helper.INTENT_ACTION; import static fr.gouv.etalab.mastodon.helper.Helper.INTENT_ACTION;
import static fr.gouv.etalab.mastodon.helper.Helper.INTENT_TARGETED_ACCOUNT;
import static fr.gouv.etalab.mastodon.helper.Helper.NOTIFICATION_INTENT; import static fr.gouv.etalab.mastodon.helper.Helper.NOTIFICATION_INTENT;
import static fr.gouv.etalab.mastodon.helper.Helper.PREF_INSTANCE; import static fr.gouv.etalab.mastodon.helper.Helper.PREF_INSTANCE;
import static fr.gouv.etalab.mastodon.helper.Helper.PREF_KEY_ID; import static fr.gouv.etalab.mastodon.helper.Helper.PREF_KEY_ID;
@ -161,6 +162,7 @@ public class NotificationsSyncJob extends Job implements OnRetrieveNotifications
String notificationUrl = null; String notificationUrl = null;
String title = null; String title = null;
final String message; final String message;
String targeted_account = null;
for(Notification notification: notifications){ for(Notification notification: notifications){
switch (notification.getType()){ switch (notification.getType()){
case "mention": case "mention":
@ -209,6 +211,7 @@ public class NotificationsSyncJob extends Job implements OnRetrieveNotifications
title = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name(), true),getContext().getString(R.string.notif_follow)); title = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name(), true),getContext().getString(R.string.notif_follow));
else else
title = String.format("@%s %s", notification.getAccount().getAcct(),getContext().getString(R.string.notif_follow)); title = String.format("@%s %s", notification.getAccount().getAcct(),getContext().getString(R.string.notif_follow));
targeted_account = notification.getAccount().getId();
} }
} }
break; break;
@ -228,6 +231,8 @@ public class NotificationsSyncJob extends Job implements OnRetrieveNotifications
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK ); intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK );
intent.putExtra(INTENT_ACTION, NOTIFICATION_INTENT); intent.putExtra(INTENT_ACTION, NOTIFICATION_INTENT);
intent.putExtra(PREF_KEY_ID, account.getId()); intent.putExtra(PREF_KEY_ID, account.getId());
if( targeted_account != null )
intent.putExtra(INTENT_TARGETED_ACCOUNT, targeted_account);
intent.putExtra(PREF_INSTANCE, account.getInstance()); intent.putExtra(PREF_INSTANCE, account.getInstance());
long notif_id = Long.parseLong(account.getId()); long notif_id = Long.parseLong(account.getId());
final int notificationId = ((notif_id + 1) > 2147483647) ? (int) (2147483647 - notif_id - 1) : (int) (notif_id + 1); final int notificationId = ((notif_id + 1) > 2147483647) ? (int) (2147483647 - notif_id - 1) : (int) (notif_id + 1);

View File

@ -66,6 +66,7 @@ import fr.gouv.etalab.mastodon.sqlite.AccountDAO;
import fr.gouv.etalab.mastodon.sqlite.Sqlite; import fr.gouv.etalab.mastodon.sqlite.Sqlite;
import static fr.gouv.etalab.mastodon.helper.Helper.INTENT_ACTION; import static fr.gouv.etalab.mastodon.helper.Helper.INTENT_ACTION;
import static fr.gouv.etalab.mastodon.helper.Helper.INTENT_TARGETED_ACCOUNT;
import static fr.gouv.etalab.mastodon.helper.Helper.NOTIFICATION_INTENT; import static fr.gouv.etalab.mastodon.helper.Helper.NOTIFICATION_INTENT;
import static fr.gouv.etalab.mastodon.helper.Helper.PREF_KEY_ID; import static fr.gouv.etalab.mastodon.helper.Helper.PREF_KEY_ID;
import static fr.gouv.etalab.mastodon.helper.Helper.notify_user; import static fr.gouv.etalab.mastodon.helper.Helper.notify_user;
@ -274,7 +275,7 @@ public class LiveNotificationService extends Service {
boolean canNotify = Helper.canNotify(getApplicationContext()); boolean canNotify = Helper.canNotify(getApplicationContext());
boolean notify = sharedpreferences.getBoolean(Helper.SET_NOTIFY, true); boolean notify = sharedpreferences.getBoolean(Helper.SET_NOTIFY, true);
String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null); String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null);
String targeted_account = null;
if((userId == null || !userId.equals(account.getId()) || activityPaused) && liveNotifications && canNotify && notify) { if((userId == null || !userId.equals(account.getId()) || activityPaused) && liveNotifications && canNotify && notify) {
boolean notif_follow = sharedpreferences.getBoolean(Helper.SET_NOTIF_FOLLOW, true); boolean notif_follow = sharedpreferences.getBoolean(Helper.SET_NOTIF_FOLLOW, true);
boolean notif_add = sharedpreferences.getBoolean(Helper.SET_NOTIF_ADD, true); boolean notif_add = sharedpreferences.getBoolean(Helper.SET_NOTIF_ADD, true);
@ -314,6 +315,7 @@ public class LiveNotificationService extends Service {
title = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name(), true),getString(R.string.notif_follow)); title = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name(), true),getString(R.string.notif_follow));
else else
title = String.format("@%s %s", notification.getAccount().getAcct(),getString(R.string.notif_follow)); title = String.format("@%s %s", notification.getAccount().getAcct(),getString(R.string.notif_follow));
targeted_account = notification.getAccount().getId();
} }
break; break;
default: default:
@ -323,6 +325,8 @@ public class LiveNotificationService extends Service {
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK ); intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK );
intent.putExtra(INTENT_ACTION, NOTIFICATION_INTENT); intent.putExtra(INTENT_ACTION, NOTIFICATION_INTENT);
intent.putExtra(PREF_KEY_ID, account.getId()); intent.putExtra(PREF_KEY_ID, account.getId());
if( targeted_account != null )
intent.putExtra(INTENT_TARGETED_ACCOUNT, targeted_account);
long notif_id = Long.parseLong(account.getId()); long notif_id = Long.parseLong(account.getId());
final int notificationId = ((notif_id + 1) > 2147483647) ? (int) (2147483647 - notif_id - 1) : (int) (notif_id + 1); final int notificationId = ((notif_id + 1) > 2147483647) ? (int) (2147483647 - notif_id - 1) : (int) (notif_id + 1);
if( notification.getAccount().getAvatar() != null ) { if( notification.getAccount().getAvatar() != null ) {