some tests
This commit is contained in:
parent
17d4325303
commit
3ee5d00812
|
@ -177,6 +177,7 @@ dependencies {
|
||||||
implementation "com.madgag.spongycastle:prov:1.58.0.0"
|
implementation "com.madgag.spongycastle:prov:1.58.0.0"
|
||||||
implementation "com.madgag.spongycastle:bcpkix-jdk15on:1.58.0.0"
|
implementation "com.madgag.spongycastle:bcpkix-jdk15on:1.58.0.0"
|
||||||
implementation "com.madgag.spongycastle:bcpg-jdk15on:1.58.0.0"
|
implementation "com.madgag.spongycastle:bcpg-jdk15on:1.58.0.0"
|
||||||
|
|
||||||
implementation 'com.github.UnifiedPush:android-connector:1.0.0'
|
implementation 'com.github.UnifiedPush:android-connector:1.0.0'
|
||||||
//Flavors
|
//Flavors
|
||||||
|
|
||||||
|
|
|
@ -460,6 +460,8 @@
|
||||||
android:name="android.support.FILE_PROVIDER_PATHS"
|
android:name="android.support.FILE_PROVIDER_PATHS"
|
||||||
android:resource="@xml/file_paths" />
|
android:resource="@xml/file_paths" />
|
||||||
</provider>
|
</provider>
|
||||||
|
|
||||||
|
|
||||||
<receiver
|
<receiver
|
||||||
android:name=".services.UnifiedPushService"
|
android:name=".services.UnifiedPushService"
|
||||||
android:enabled="true"
|
android:enabled="true"
|
||||||
|
|
|
@ -139,7 +139,6 @@ import app.fedilab.android.helper.ExpandableHeightListView;
|
||||||
import app.fedilab.android.helper.Helper;
|
import app.fedilab.android.helper.Helper;
|
||||||
import app.fedilab.android.helper.MenuFloating;
|
import app.fedilab.android.helper.MenuFloating;
|
||||||
import app.fedilab.android.interfaces.OnFilterActionInterface;
|
import app.fedilab.android.interfaces.OnFilterActionInterface;
|
||||||
import app.fedilab.android.interfaces.OnPostSubscription;
|
|
||||||
import app.fedilab.android.interfaces.OnRetrieveEmojiAccountInterface;
|
import app.fedilab.android.interfaces.OnRetrieveEmojiAccountInterface;
|
||||||
import app.fedilab.android.interfaces.OnRetrieveFeedsInterface;
|
import app.fedilab.android.interfaces.OnRetrieveFeedsInterface;
|
||||||
import app.fedilab.android.interfaces.OnRetrieveInstanceInterface;
|
import app.fedilab.android.interfaces.OnRetrieveInstanceInterface;
|
||||||
|
@ -164,7 +163,7 @@ import static app.fedilab.android.helper.Helper.changeDrawableColor;
|
||||||
|
|
||||||
|
|
||||||
public abstract class BaseMainActivity extends BaseActivity
|
public abstract class BaseMainActivity extends BaseActivity
|
||||||
implements NavigationView.OnNavigationItemSelectedListener, OnRetrieveFeedsInterface, OnUpdateAccountInfoInterface, OnRetrieveMetaDataInterface, OnRetrieveInstanceInterface, OnRetrieveRemoteAccountInterface, OnRetrieveEmojiAccountInterface, OnFilterActionInterface, OnSyncTimelineInterface, OnRetrieveRelationshipInterface, OnPostSubscription {
|
implements NavigationView.OnNavigationItemSelectedListener, OnRetrieveFeedsInterface, OnUpdateAccountInfoInterface, OnRetrieveMetaDataInterface, OnRetrieveInstanceInterface, OnRetrieveRemoteAccountInterface, OnRetrieveEmojiAccountInterface, OnFilterActionInterface, OnSyncTimelineInterface, OnRetrieveRelationshipInterface {
|
||||||
|
|
||||||
|
|
||||||
public static String currentLocale;
|
public static String currentLocale;
|
||||||
|
@ -424,12 +423,7 @@ public abstract class BaseMainActivity extends BaseActivity
|
||||||
|
|
||||||
|
|
||||||
if (social == UpdateAccountInfoAsyncTask.SOCIAL.MASTODON || social == UpdateAccountInfoAsyncTask.SOCIAL.PLEROMA) {
|
if (social == UpdateAccountInfoAsyncTask.SOCIAL.MASTODON || social == UpdateAccountInfoAsyncTask.SOCIAL.PLEROMA) {
|
||||||
String serverKey = sharedpreferences.getString(Helper.SERVER_KEY + userId + instance, null);
|
|
||||||
if (serverKey == null) {
|
|
||||||
new PostSubscriptionAsyncTask(BaseMainActivity.this, this);
|
|
||||||
}
|
|
||||||
new PostSubscriptionAsyncTask(BaseMainActivity.this, this);
|
|
||||||
// Registration registration = new Registration();
|
|
||||||
new Registration().registerAppWithDialog(BaseMainActivity.this);
|
new Registration().registerAppWithDialog(BaseMainActivity.this);
|
||||||
}
|
}
|
||||||
if (social == UpdateAccountInfoAsyncTask.SOCIAL.MASTODON || social == UpdateAccountInfoAsyncTask.SOCIAL.PLEROMA || social == UpdateAccountInfoAsyncTask.SOCIAL.GNU || social == UpdateAccountInfoAsyncTask.SOCIAL.FRIENDICA) {
|
if (social == UpdateAccountInfoAsyncTask.SOCIAL.MASTODON || social == UpdateAccountInfoAsyncTask.SOCIAL.PLEROMA || social == UpdateAccountInfoAsyncTask.SOCIAL.GNU || social == UpdateAccountInfoAsyncTask.SOCIAL.FRIENDICA) {
|
||||||
|
@ -456,26 +450,26 @@ public abstract class BaseMainActivity extends BaseActivity
|
||||||
Helper.changeDrawableColor(BaseMainActivity.this, R.drawable.ic_home, R.attr.iconColorMenu);
|
Helper.changeDrawableColor(BaseMainActivity.this, R.drawable.ic_home, R.attr.iconColorMenu);
|
||||||
|
|
||||||
|
|
||||||
@SuppressWarnings("ConstantConditions") @SuppressLint("CutPasteId")
|
@SuppressLint("CutPasteId")
|
||||||
ImageView iconSub = pTabsub.getCustomView().findViewById(R.id.tab_icon);
|
ImageView iconSub = pTabsub.getCustomView().findViewById(R.id.tab_icon);
|
||||||
|
|
||||||
iconSub.setImageResource(R.drawable.ic_subscriptions);
|
iconSub.setImageResource(R.drawable.ic_subscriptions);
|
||||||
|
|
||||||
|
|
||||||
@SuppressWarnings("ConstantConditions") @SuppressLint("CutPasteId")
|
@SuppressLint("CutPasteId")
|
||||||
ImageView iconOver = pTabOver.getCustomView().findViewById(R.id.tab_icon);
|
ImageView iconOver = pTabOver.getCustomView().findViewById(R.id.tab_icon);
|
||||||
iconOver.setImageResource(R.drawable.ic_overview);
|
iconOver.setImageResource(R.drawable.ic_overview);
|
||||||
|
|
||||||
|
|
||||||
@SuppressWarnings("ConstantConditions") @SuppressLint("CutPasteId")
|
@SuppressLint("CutPasteId")
|
||||||
ImageView iconTrend = pTabTrend.getCustomView().findViewById(R.id.tab_icon);
|
ImageView iconTrend = pTabTrend.getCustomView().findViewById(R.id.tab_icon);
|
||||||
iconTrend.setImageResource(R.drawable.ic_trending_up);
|
iconTrend.setImageResource(R.drawable.ic_trending_up);
|
||||||
|
|
||||||
@SuppressWarnings("ConstantConditions") @SuppressLint("CutPasteId")
|
@SuppressLint("CutPasteId")
|
||||||
ImageView iconAdded = pTabAdded.getCustomView().findViewById(R.id.tab_icon);
|
ImageView iconAdded = pTabAdded.getCustomView().findViewById(R.id.tab_icon);
|
||||||
iconAdded.setImageResource(R.drawable.ic_recently_added);
|
iconAdded.setImageResource(R.drawable.ic_recently_added);
|
||||||
|
|
||||||
@SuppressWarnings("ConstantConditions") @SuppressLint("CutPasteId")
|
@SuppressLint("CutPasteId")
|
||||||
ImageView iconLocal = pTabLocal.getCustomView().findViewById(R.id.tab_icon);
|
ImageView iconLocal = pTabLocal.getCustomView().findViewById(R.id.tab_icon);
|
||||||
iconLocal.setImageResource(R.drawable.ic_home);
|
iconLocal.setImageResource(R.drawable.ic_home);
|
||||||
|
|
||||||
|
@ -557,18 +551,18 @@ public abstract class BaseMainActivity extends BaseActivity
|
||||||
//pfTabDiscover.setCustomView(R.layout.tab_badge);
|
//pfTabDiscover.setCustomView(R.layout.tab_badge);
|
||||||
|
|
||||||
|
|
||||||
@SuppressWarnings("ConstantConditions") @SuppressLint("CutPasteId")
|
@SuppressLint("CutPasteId")
|
||||||
ImageView iconHome = pfTabHome.getCustomView().findViewById(R.id.tab_icon);
|
ImageView iconHome = pfTabHome.getCustomView().findViewById(R.id.tab_icon);
|
||||||
|
|
||||||
iconHome.setImageResource(R.drawable.ic_home);
|
iconHome.setImageResource(R.drawable.ic_home);
|
||||||
|
|
||||||
|
|
||||||
@SuppressWarnings("ConstantConditions") @SuppressLint("CutPasteId")
|
@SuppressLint("CutPasteId")
|
||||||
ImageView iconLocal = pfTabLocal.getCustomView().findViewById(R.id.tab_icon);
|
ImageView iconLocal = pfTabLocal.getCustomView().findViewById(R.id.tab_icon);
|
||||||
iconLocal.setImageResource(R.drawable.ic_people);
|
iconLocal.setImageResource(R.drawable.ic_people);
|
||||||
|
|
||||||
|
|
||||||
@SuppressWarnings("ConstantConditions") @SuppressLint("CutPasteId")
|
@SuppressLint("CutPasteId")
|
||||||
ImageView iconNotif = pfTabNotification.getCustomView().findViewById(R.id.tab_icon);
|
ImageView iconNotif = pfTabNotification.getCustomView().findViewById(R.id.tab_icon);
|
||||||
iconNotif.setImageResource(R.drawable.ic_notifications);
|
iconNotif.setImageResource(R.drawable.ic_notifications);
|
||||||
|
|
||||||
|
@ -576,7 +570,7 @@ public abstract class BaseMainActivity extends BaseActivity
|
||||||
ImageView iconDiscover = pfTabDiscover.getCustomView().findViewById(R.id.tab_icon);
|
ImageView iconDiscover = pfTabDiscover.getCustomView().findViewById(R.id.tab_icon);
|
||||||
iconDiscover.setImageResource(R.drawable.ic_people);*/
|
iconDiscover.setImageResource(R.drawable.ic_people);*/
|
||||||
|
|
||||||
@SuppressWarnings("ConstantConditions") @SuppressLint("CutPasteId")
|
@SuppressLint("CutPasteId")
|
||||||
ImageView iconStories = pfStories.getCustomView().findViewById(R.id.tab_icon);
|
ImageView iconStories = pfStories.getCustomView().findViewById(R.id.tab_icon);
|
||||||
iconStories.setImageResource(R.drawable.ic_story);
|
iconStories.setImageResource(R.drawable.ic_story);
|
||||||
|
|
||||||
|
@ -1707,10 +1701,6 @@ public abstract class BaseMainActivity extends BaseActivity
|
||||||
@Override
|
@Override
|
||||||
public void onDestroy() {
|
public void onDestroy() {
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
if (social == UpdateAccountInfoAsyncTask.SOCIAL.MASTODON || social == UpdateAccountInfoAsyncTask.SOCIAL.PLEROMA) {
|
|
||||||
new Registration().unregisterApp(BaseMainActivity.this);
|
|
||||||
}
|
|
||||||
|
|
||||||
SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, MODE_PRIVATE);
|
SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, MODE_PRIVATE);
|
||||||
boolean clearCacheExit = sharedpreferences.getBoolean(Helper.SET_CLEAR_CACHE_EXIT, false);
|
boolean clearCacheExit = sharedpreferences.getBoolean(Helper.SET_CLEAR_CACHE_EXIT, false);
|
||||||
WeakReference<Context> contextReference = new WeakReference<>(BaseMainActivity.this);
|
WeakReference<Context> contextReference = new WeakReference<>(BaseMainActivity.this);
|
||||||
|
@ -2440,17 +2430,6 @@ public abstract class BaseMainActivity extends BaseActivity
|
||||||
|
|
||||||
protected abstract void launchOwnerNotificationsActivity();
|
protected abstract void launchOwnerNotificationsActivity();
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onSubscription(APIResponse apiResponse) {
|
|
||||||
if (apiResponse != null && apiResponse.getPushSubscription() != null) {
|
|
||||||
final SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, MODE_PRIVATE);
|
|
||||||
String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null);
|
|
||||||
String instance = sharedpreferences.getString(Helper.PREF_INSTANCE, Helper.getLiveInstance(BaseMainActivity.this));
|
|
||||||
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
||||||
editor.putString(Helper.SERVER_KEY + userId + instance, apiResponse.getPushSubscription().getServer_key());
|
|
||||||
editor.apply();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum iconLauncher {
|
public enum iconLauncher {
|
||||||
BUBBLES,
|
BUBBLES,
|
||||||
|
|
|
@ -22,6 +22,7 @@ import java.lang.ref.WeakReference;
|
||||||
|
|
||||||
import app.fedilab.android.client.API;
|
import app.fedilab.android.client.API;
|
||||||
import app.fedilab.android.client.APIResponse;
|
import app.fedilab.android.client.APIResponse;
|
||||||
|
import app.fedilab.android.client.Entities.Account;
|
||||||
import app.fedilab.android.interfaces.OnPostSubscription;
|
import app.fedilab.android.interfaces.OnPostSubscription;
|
||||||
|
|
||||||
|
|
||||||
|
@ -30,18 +31,21 @@ public class PostSubscriptionAsyncTask {
|
||||||
private final OnPostSubscription listener;
|
private final OnPostSubscription listener;
|
||||||
private final WeakReference<Context> contextReference;
|
private final WeakReference<Context> contextReference;
|
||||||
private APIResponse apiResponse;
|
private APIResponse apiResponse;
|
||||||
|
private final String endpoint;
|
||||||
|
private final Account account;
|
||||||
|
|
||||||
|
public PostSubscriptionAsyncTask(Context context, Account account, String endpoint, OnPostSubscription onPostSubscription) {
|
||||||
public PostSubscriptionAsyncTask(Context context, OnPostSubscription onPostSubscription) {
|
|
||||||
this.contextReference = new WeakReference<>(context);
|
this.contextReference = new WeakReference<>(context);
|
||||||
this.listener = onPostSubscription;
|
this.listener = onPostSubscription;
|
||||||
|
this.endpoint = endpoint;
|
||||||
|
this.account = account;
|
||||||
doInBackground();
|
doInBackground();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected void doInBackground() {
|
protected void doInBackground() {
|
||||||
new Thread(() -> {
|
new Thread(() -> {
|
||||||
apiResponse = new API(contextReference.get()).pushSubscription();
|
apiResponse = new API(contextReference.get(), account.getInstance(), account.getToken()).pushSubscription(account, endpoint);
|
||||||
Handler mainHandler = new Handler(Looper.getMainLooper());
|
Handler mainHandler = new Handler(Looper.getMainLooper());
|
||||||
Runnable myRunnable = () -> listener.onSubscription(apiResponse);
|
Runnable myRunnable = () -> listener.onSubscription(apiResponse);
|
||||||
mainHandler.post(myRunnable);
|
mainHandler.post(myRunnable);
|
||||||
|
|
|
@ -5779,12 +5779,13 @@ public class API {
|
||||||
apiResponse.setLists(lists);
|
apiResponse.setLists(lists);
|
||||||
return apiResponse;
|
return apiResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Subscribe to push notifications
|
* Subscribe to push notifications
|
||||||
*
|
*
|
||||||
* @return APIResponse
|
* @return APIResponse
|
||||||
*/
|
*/
|
||||||
public APIResponse pushSubscription() {
|
public APIResponse pushSubscription(Account account, String endpoint) {
|
||||||
PushSubscription pushSubscription = new PushSubscription();
|
PushSubscription pushSubscription = new PushSubscription();
|
||||||
final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
|
final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
|
||||||
boolean notif_follow = sharedpreferences.getBoolean(Helper.SET_NOTIF_FOLLOW, true);
|
boolean notif_follow = sharedpreferences.getBoolean(Helper.SET_NOTIF_FOLLOW, true);
|
||||||
|
@ -5801,7 +5802,7 @@ public class API {
|
||||||
params.put("data[alerts][reblog]", String.valueOf(notif_share));
|
params.put("data[alerts][reblog]", String.valueOf(notif_share));
|
||||||
params.put("data[alerts][poll]", String.valueOf(notif_poll));
|
params.put("data[alerts][poll]", String.valueOf(notif_poll));
|
||||||
|
|
||||||
params.put("subscription[endpoint]", getAbsoluteUrl("/streaming/user"));
|
params.put("subscription[endpoint]", endpoint);
|
||||||
|
|
||||||
ECDH ecdh = ECDH.getInstance();
|
ECDH ecdh = ECDH.getInstance();
|
||||||
String pubKey = ecdh.getPublicKey(context);
|
String pubKey = ecdh.getPublicKey(context);
|
||||||
|
|
|
@ -1638,8 +1638,8 @@ public class PeertubeAPI {
|
||||||
String errorM = jsonObject.get("error").toString();
|
String errorM = jsonObject.get("error").toString();
|
||||||
message = "Error " + statusCode + " : " + errorM;
|
message = "Error " + statusCode + " : " + errorM;
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
if (error.getMessage().split(".").length > 0) {
|
if (error.getMessage().split("\\.").length > 0) {
|
||||||
String errorM = error.getMessage().split(".")[0];
|
String errorM = error.getMessage().split("\\.")[0];
|
||||||
message = "Error " + statusCode + " : " + errorM;
|
message = "Error " + statusCode + " : " + errorM;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -278,6 +278,7 @@ public class BaseHelper {
|
||||||
public static final String CLIENT_NAME = "client_name";
|
public static final String CLIENT_NAME = "client_name";
|
||||||
public static final String APP_PREFS = "app_prefs";
|
public static final String APP_PREFS = "app_prefs";
|
||||||
public static final String SERVER_KEY = "server_key";
|
public static final String SERVER_KEY = "server_key";
|
||||||
|
public static final String SERVER_ENDPOINT = "server_endpoint";
|
||||||
public static final String ID = "id";
|
public static final String ID = "id";
|
||||||
public static final String CLIENT_ID = "client_id";
|
public static final String CLIENT_ID = "client_id";
|
||||||
public static final String CLIENT_SECRET = "client_secret";
|
public static final String CLIENT_SECRET = "client_secret";
|
||||||
|
|
|
@ -2,8 +2,14 @@ package app.fedilab.android.helper;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.util.Base64;
|
import android.util.Base64;
|
||||||
|
|
||||||
|
import org.unifiedpush.android.connector.Registration;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
|
import app.fedilab.android.activities.BaseMainActivity;
|
||||||
|
|
||||||
public class PushNotifications {
|
public class PushNotifications {
|
||||||
public void registerPushNotifications(Context context, String endpoint) {
|
public void registerPushNotifications(Context context, String endpoint) {
|
||||||
ECDH ecdh = new ECDH();
|
ECDH ecdh = new ECDH();
|
||||||
|
@ -19,6 +25,15 @@ public class PushNotifications {
|
||||||
ecdh.saveServerKey(context, server_key);
|
ecdh.saveServerKey(context, server_key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void getDistributors(Context context) {
|
||||||
|
List<String> distributors = new Registration().getDistributors(context);
|
||||||
|
if (distributors.isEmpty()) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void displayNotification(Context context, String ciphered) {
|
public void displayNotification(Context context, String ciphered) {
|
||||||
ECDH ecdh = new ECDH();
|
ECDH ecdh = new ECDH();
|
||||||
byte[] secret = ecdh.getSecret(context);
|
byte[] secret = ecdh.getSecret(context);
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package app.fedilab.android.services;
|
package app.fedilab.android.services;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
|
import android.database.sqlite.SQLiteDatabase;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
@ -8,16 +10,41 @@ import org.jetbrains.annotations.Nullable;
|
||||||
import org.unifiedpush.android.connector.MessagingReceiver;
|
import org.unifiedpush.android.connector.MessagingReceiver;
|
||||||
import org.unifiedpush.android.connector.MessagingReceiverHandler;
|
import org.unifiedpush.android.connector.MessagingReceiverHandler;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import app.fedilab.android.activities.BaseMainActivity;
|
||||||
|
import app.fedilab.android.activities.LiveNotificationSettingsAccountsActivity;
|
||||||
|
import app.fedilab.android.asynctasks.PostSubscriptionAsyncTask;
|
||||||
|
import app.fedilab.android.client.APIResponse;
|
||||||
|
import app.fedilab.android.client.Entities.Account;
|
||||||
import app.fedilab.android.helper.Helper;
|
import app.fedilab.android.helper.Helper;
|
||||||
import app.fedilab.android.helper.PushNotifications;
|
import app.fedilab.android.helper.PushNotifications;
|
||||||
|
import app.fedilab.android.interfaces.OnPostSubscription;
|
||||||
|
import app.fedilab.android.sqlite.AccountDAO;
|
||||||
|
import app.fedilab.android.sqlite.Sqlite;
|
||||||
|
|
||||||
|
import static android.content.Context.MODE_PRIVATE;
|
||||||
|
|
||||||
|
class handler implements MessagingReceiverHandler, OnPostSubscription {
|
||||||
|
|
||||||
|
private Context context;
|
||||||
|
|
||||||
class handler implements MessagingReceiverHandler {
|
|
||||||
@Override
|
@Override
|
||||||
public void onNewEndpoint(@Nullable Context context, @NotNull String s) {
|
public void onNewEndpoint(@Nullable Context context, @NotNull String s) {
|
||||||
Log.v(Helper.TAG, "onNewEndpoint: " + s);
|
Log.v(Helper.TAG, "onNewEndpoint: " + s);
|
||||||
|
final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, MODE_PRIVATE);
|
||||||
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
||||||
|
editor.putString(Helper.SERVER_ENDPOINT, s);
|
||||||
|
editor.apply();
|
||||||
|
|
||||||
PushNotifications push = new PushNotifications();
|
PushNotifications push = new PushNotifications();
|
||||||
push.registerPushNotifications(context, s);
|
push.registerPushNotifications(context, s);
|
||||||
|
this.context = context;
|
||||||
|
SQLiteDatabase db = Sqlite.getInstance(context.getApplicationContext(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
|
||||||
|
List<Account> accountPush = new AccountDAO(context, db).getPushNotificationAccounts();
|
||||||
|
for (Account account : accountPush) {
|
||||||
|
new PostSubscriptionAsyncTask(context, account, s, this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -44,9 +71,21 @@ class handler implements MessagingReceiverHandler {
|
||||||
push.displayNotification(context, s);
|
push.displayNotification(context, s);
|
||||||
Log.v(Helper.TAG, "onMessage: " + s);
|
Log.v(Helper.TAG, "onMessage: " + s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSubscription(APIResponse apiResponse) {
|
||||||
|
if (apiResponse != null && apiResponse.getPushSubscription() != null) {
|
||||||
|
final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, MODE_PRIVATE);
|
||||||
|
String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null);
|
||||||
|
String instance = sharedpreferences.getString(Helper.PREF_INSTANCE, Helper.getLiveInstance(context));
|
||||||
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
||||||
|
editor.putString(Helper.SERVER_KEY + userId + instance, apiResponse.getPushSubscription().getServer_key());
|
||||||
|
editor.apply();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class UnifiedPushService extends MessagingReceiver {
|
public class UnifiedPushService extends MessagingReceiver {
|
||||||
public UnifiedPushService() {
|
public UnifiedPushService() {
|
||||||
super(new handler());
|
super(new handler());
|
||||||
}
|
}
|
||||||
|
|
|
@ -278,6 +278,22 @@ public class AccountDAO {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns all Account in db
|
||||||
|
*
|
||||||
|
* @return Account List<Account>
|
||||||
|
*/
|
||||||
|
public List<Account> getPushNotificationAccounts() {
|
||||||
|
|
||||||
|
try {
|
||||||
|
Cursor c = db.query(Sqlite.TABLE_USER_ACCOUNT, null, "(" + Sqlite.COL_SOCIAL + " = 'MASTODON' OR " + Sqlite.COL_SOCIAL + " = 'PLEROMA') AND " + Sqlite.COL_OAUTHTOKEN + " != 'null'", null, null, null, Sqlite.COL_INSTANCE + " ASC", null);
|
||||||
|
return cursorToListUser(c);
|
||||||
|
} catch (Exception e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns an Account by token
|
* Returns an Account by token
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue