Fix conflicts
This commit is contained in:
commit
914a61b564
11 changed files with 164 additions and 52 deletions
|
@ -115,7 +115,7 @@ dependencies {
|
||||||
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
|
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
|
||||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
|
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
|
||||||
|
|
||||||
__32bitImplementation 'io.lbry:lbrysdk32:0.85.1'
|
__32bitImplementation 'io.lbry:lbrysdk32:0.86.1'
|
||||||
// __64bitImplementation 'io.lbry:lbrysdk64:0.85.1'
|
// __64bitImplementation 'io.lbry:lbrysdk64:0.86.1'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -467,7 +467,7 @@ public class MainActivity extends AppCompatActivity implements SdkStatusListener
|
||||||
// setup uri bar
|
// setup uri bar
|
||||||
setupUriBar();
|
setupUriBar();
|
||||||
initNotificationsPage();
|
initNotificationsPage();
|
||||||
loadUnreadNotificationsCount();
|
loadUnseenNotificationsCount();
|
||||||
|
|
||||||
// other
|
// other
|
||||||
pendingSyncSetQueue = new ArrayList<>();
|
pendingSyncSetQueue = new ArrayList<>();
|
||||||
|
@ -1747,19 +1747,6 @@ public class MainActivity extends AppCompatActivity implements SdkStatusListener
|
||||||
checkSyncedWallet();
|
checkSyncedWallet();
|
||||||
}
|
}
|
||||||
|
|
||||||
(new Thread() {
|
|
||||||
public void run() {
|
|
||||||
Map<String, Object> params = new HashMap<>();
|
|
||||||
try {
|
|
||||||
Log.d(TAG, "Calling settings_get");
|
|
||||||
Log.d(TAG, ((JSONObject) Lbry.parseResponse(Lbry.apiCall("settings_get", params, Lbry.SDK_CONNECTION_STRING))).toString(2));
|
|
||||||
} catch (Exception ex) {
|
|
||||||
// pass
|
|
||||||
Log.d(TAG, ex.getMessage(), ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}).start();
|
|
||||||
|
|
||||||
//findViewById(R.id.global_sdk_initializing_status).setVisibility(View.GONE);
|
//findViewById(R.id.global_sdk_initializing_status).setVisibility(View.GONE);
|
||||||
//checkAndEnableShareUsageData();
|
//checkAndEnableShareUsageData();
|
||||||
|
|
||||||
|
@ -2382,7 +2369,7 @@ public class MainActivity extends AppCompatActivity implements SdkStatusListener
|
||||||
}
|
}
|
||||||
|
|
||||||
if (notificationListAdapter != null) {
|
if (notificationListAdapter != null) {
|
||||||
markNotificationsRead();
|
markNotificationsSeen();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2391,17 +2378,17 @@ public class MainActivity extends AppCompatActivity implements SdkStatusListener
|
||||||
findViewById(R.id.notifications_container).setVisibility(View.GONE);
|
findViewById(R.id.notifications_container).setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void markNotificationsRead() {
|
private void markNotificationsSeen() {
|
||||||
List<LbryNotification> all = notificationListAdapter != null ? notificationListAdapter.getItems() : null;
|
List<LbryNotification> all = notificationListAdapter != null ? notificationListAdapter.getItems() : null;
|
||||||
if (all != null) {
|
if (all != null) {
|
||||||
List<Long> unreadIds = new ArrayList<>();
|
List<Long> unseenIds = new ArrayList<>();
|
||||||
for (LbryNotification notification : all) {
|
for (LbryNotification notification : all) {
|
||||||
if (!notification.isRead() && notification.getRemoteId() > 0) {
|
if (!notification.isSeen() && notification.getRemoteId() > 0) {
|
||||||
unreadIds.add(notification.getRemoteId());
|
unseenIds.add(notification.getRemoteId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (unreadIds.size() > 0) {
|
if (unseenIds.size() > 0) {
|
||||||
NotificationUpdateTask task = new NotificationUpdateTask(unreadIds, true);
|
NotificationUpdateTask task = new NotificationUpdateTask(unseenIds, true);
|
||||||
task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2411,14 +2398,14 @@ public class MainActivity extends AppCompatActivity implements SdkStatusListener
|
||||||
protected Void doInBackground(Void... params) {
|
protected Void doInBackground(Void... params) {
|
||||||
try {
|
try {
|
||||||
SQLiteDatabase db = dbHelper.getWritableDatabase();
|
SQLiteDatabase db = dbHelper.getWritableDatabase();
|
||||||
DatabaseHelper.markNotificationsRead(db);
|
DatabaseHelper.markNotificationsSeen(db);
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
// pass
|
// pass
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
protected void onPostExecute(Void result) {
|
protected void onPostExecute(Void result) {
|
||||||
loadUnreadNotificationsCount();
|
loadUnseenNotificationsCount();
|
||||||
}
|
}
|
||||||
}).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
}).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||||
}
|
}
|
||||||
|
@ -3418,7 +3405,7 @@ public class MainActivity extends AppCompatActivity implements SdkStatusListener
|
||||||
task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void displayUnreadNotificationCount(int count) {
|
private void displayUnseenNotificationCount(int count) {
|
||||||
String text = count > 99 ? "99+" : String.valueOf(count);
|
String text = count > 99 ? "99+" : String.valueOf(count);
|
||||||
|
|
||||||
TextView badge = findViewById(R.id.notifications_badge_count);
|
TextView badge = findViewById(R.id.notifications_badge_count);
|
||||||
|
@ -3426,19 +3413,19 @@ public class MainActivity extends AppCompatActivity implements SdkStatusListener
|
||||||
badge.setText(text);
|
badge.setText(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loadUnreadNotificationsCount() {
|
private void loadUnseenNotificationsCount() {
|
||||||
(new AsyncTask<Void, Void, Integer>() {
|
(new AsyncTask<Void, Void, Integer>() {
|
||||||
@Override
|
@Override
|
||||||
protected Integer doInBackground(Void... params) {
|
protected Integer doInBackground(Void... params) {
|
||||||
try {
|
try {
|
||||||
SQLiteDatabase db = dbHelper.getReadableDatabase();
|
SQLiteDatabase db = dbHelper.getReadableDatabase();
|
||||||
return DatabaseHelper.getUnreadNotificationsCount(db);
|
return DatabaseHelper.getUnseenNotificationsCount(db);
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
protected void onPostExecute(Integer count) {
|
protected void onPostExecute(Integer count) {
|
||||||
displayUnreadNotificationCount(count);
|
displayUnseenNotificationCount(count);
|
||||||
}
|
}
|
||||||
}).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
}).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||||
}
|
}
|
||||||
|
@ -3450,10 +3437,10 @@ public class MainActivity extends AppCompatActivity implements SdkStatusListener
|
||||||
public void onSuccess(List<LbryNotification> notifications) {
|
public void onSuccess(List<LbryNotification> notifications) {
|
||||||
remoteNotifcationsLastLoaded = new Date();
|
remoteNotifcationsLastLoaded = new Date();
|
||||||
|
|
||||||
loadUnreadNotificationsCount();
|
loadUnseenNotificationsCount();
|
||||||
loadLocalNotifications();
|
loadLocalNotifications();
|
||||||
if (markRead && findViewById(R.id.notifications_container).getVisibility() == View.VISIBLE) {
|
if (markRead && findViewById(R.id.notifications_container).getVisibility() == View.VISIBLE) {
|
||||||
markNotificationsRead();
|
markNotificationsSeen();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (notificationsSwipeContainer != null) {
|
if (notificationsSwipeContainer != null) {
|
||||||
|
@ -3494,7 +3481,7 @@ public class MainActivity extends AppCompatActivity implements SdkStatusListener
|
||||||
protected void onPostExecute(List<LbryNotification> notifications) {
|
protected void onPostExecute(List<LbryNotification> notifications) {
|
||||||
findViewById(R.id.notification_list_empty_container).setVisibility(notifications.size() == 0 ? View.VISIBLE : View.GONE);
|
findViewById(R.id.notification_list_empty_container).setVisibility(notifications.size() == 0 ? View.VISIBLE : View.GONE);
|
||||||
findViewById(R.id.notifications_progress).setVisibility(View.GONE);
|
findViewById(R.id.notifications_progress).setVisibility(View.GONE);
|
||||||
loadUnreadNotificationsCount();
|
loadUnseenNotificationsCount();
|
||||||
|
|
||||||
if (notificationListAdapter == null) {
|
if (notificationListAdapter == null) {
|
||||||
notificationListAdapter = new NotificationListAdapter(notifications, MainActivity.this);
|
notificationListAdapter = new NotificationListAdapter(notifications, MainActivity.this);
|
||||||
|
@ -3551,7 +3538,7 @@ public class MainActivity extends AppCompatActivity implements SdkStatusListener
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
protected void onPostExecute() {
|
protected void onPostExecute() {
|
||||||
loadUnreadNotificationsCount();
|
loadUnseenNotificationsCount();
|
||||||
}
|
}
|
||||||
}).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
}).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,7 @@ import com.google.android.material.snackbar.Snackbar;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
import io.lbry.browser.adapter.VerificationPagerAdapter;
|
import io.lbry.browser.adapter.VerificationPagerAdapter;
|
||||||
|
import io.lbry.browser.listener.SdkStatusListener;
|
||||||
import io.lbry.browser.listener.SignInListener;
|
import io.lbry.browser.listener.SignInListener;
|
||||||
import io.lbry.browser.listener.WalletSyncListener;
|
import io.lbry.browser.listener.WalletSyncListener;
|
||||||
import io.lbry.browser.model.lbryinc.RewardVerified;
|
import io.lbry.browser.model.lbryinc.RewardVerified;
|
||||||
|
@ -35,6 +36,7 @@ public class VerificationActivity extends FragmentActivity implements SignInList
|
||||||
public static final int VERIFICATION_FLOW_REWARDS = 2;
|
public static final int VERIFICATION_FLOW_REWARDS = 2;
|
||||||
public static final int VERIFICATION_FLOW_WALLET = 3;
|
public static final int VERIFICATION_FLOW_WALLET = 3;
|
||||||
|
|
||||||
|
private List<SdkStatusListener> sdkStatusListeners;
|
||||||
private BroadcastReceiver sdkReceiver;
|
private BroadcastReceiver sdkReceiver;
|
||||||
private String email;
|
private String email;
|
||||||
private boolean signedIn;
|
private boolean signedIn;
|
||||||
|
@ -44,6 +46,8 @@ public class VerificationActivity extends FragmentActivity implements SignInList
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
|
sdkStatusListeners = new ArrayList<>();
|
||||||
|
|
||||||
signedIn = Lbryio.isSignedIn();
|
signedIn = Lbryio.isSignedIn();
|
||||||
Intent intent = getIntent();
|
Intent intent = getIntent();
|
||||||
if (intent != null) {
|
if (intent != null) {
|
||||||
|
@ -65,11 +69,18 @@ public class VerificationActivity extends FragmentActivity implements SignInList
|
||||||
|
|
||||||
IntentFilter filter = new IntentFilter();
|
IntentFilter filter = new IntentFilter();
|
||||||
filter.addAction(LbrynetService.ACTION_STOP_SERVICE);
|
filter.addAction(LbrynetService.ACTION_STOP_SERVICE);
|
||||||
|
filter.addAction(MainActivity.ACTION_SDK_READY);
|
||||||
sdkReceiver = new BroadcastReceiver() {
|
sdkReceiver = new BroadcastReceiver() {
|
||||||
@Override
|
@Override
|
||||||
public void onReceive(Context context, Intent intent) {
|
public void onReceive(Context context, Intent intent) {
|
||||||
String action = intent.getAction();
|
String action = intent.getAction();
|
||||||
if (LbrynetService.ACTION_STOP_SERVICE.equals(action)) {
|
if (MainActivity.ACTION_SDK_READY.equals(action)) {
|
||||||
|
for (SdkStatusListener listener : sdkStatusListeners) {
|
||||||
|
if (listener != null) {
|
||||||
|
listener.onSdkReady();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (LbrynetService.ACTION_STOP_SERVICE.equals(action)) {
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -329,4 +340,14 @@ public class VerificationActivity extends FragmentActivity implements SignInList
|
||||||
Helper.unregisterReceiver(sdkReceiver, this);
|
Helper.unregisterReceiver(sdkReceiver, this);
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addSdkStatusListener(SdkStatusListener listener) {
|
||||||
|
if (!sdkStatusListeners.contains(listener)) {
|
||||||
|
sdkStatusListeners.add(listener);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeSdkStatusListener(SdkStatusListener listener) {
|
||||||
|
sdkStatusListeners.remove(listener);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -124,7 +124,9 @@ public class DatabaseHelper extends SQLiteOpenHelper {
|
||||||
private static final String SQL_INSERT_NOTIFICATION = "REPLACE INTO notifications (remote_id, author_url, title, description, rule, target_url, is_read, is_seen, timestamp) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
|
private static final String SQL_INSERT_NOTIFICATION = "REPLACE INTO notifications (remote_id, author_url, title, description, rule, target_url, is_read, is_seen, timestamp) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
|
||||||
private static final String SQL_GET_NOTIFICATIONS = "SELECT id, remote_id, author_url, title, description, rule, target_url, is_read, is_seen, timestamp FROM notifications ORDER BY timestamp DESC LIMIT 500";
|
private static final String SQL_GET_NOTIFICATIONS = "SELECT id, remote_id, author_url, title, description, rule, target_url, is_read, is_seen, timestamp FROM notifications ORDER BY timestamp DESC LIMIT 500";
|
||||||
private static final String SQL_GET_UNREAD_NOTIFICATIONS_COUNT = "SELECT COUNT(id) FROM notifications WHERE is_read <> 1";
|
private static final String SQL_GET_UNREAD_NOTIFICATIONS_COUNT = "SELECT COUNT(id) FROM notifications WHERE is_read <> 1";
|
||||||
|
private static final String SQL_GET_UNSEEN_NOTIFICATIONS_COUNT = "SELECT COUNT(id) FROM notifications WHERE is_seen <> 1";
|
||||||
private static final String SQL_MARK_NOTIFICATIONS_READ = "UPDATE notifications SET is_read = 1 WHERE is_read = 0";
|
private static final String SQL_MARK_NOTIFICATIONS_READ = "UPDATE notifications SET is_read = 1 WHERE is_read = 0";
|
||||||
|
private static final String SQL_MARK_NOTIFICATIONS_SEEN = "UPDATE notifications SET is_seen = 1 WHERE is_seen = 0";
|
||||||
private static final String SQL_MARK_NOTIFICATION_READ_AND_SEEN = "UPDATE notifications SET is_read = 1, is_seen = 1 WHERE id = ?";
|
private static final String SQL_MARK_NOTIFICATION_READ_AND_SEEN = "UPDATE notifications SET is_read = 1, is_seen = 1 WHERE id = ?";
|
||||||
|
|
||||||
private static final String SQL_INSERT_SHUFFLE_WATCHED = "REPLACE INTO shuffle_watched (claim_id) VALUES (?)";
|
private static final String SQL_INSERT_SHUFFLE_WATCHED = "REPLACE INTO shuffle_watched (claim_id) VALUES (?)";
|
||||||
|
@ -417,6 +419,22 @@ public class DatabaseHelper extends SQLiteOpenHelper {
|
||||||
}
|
}
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
public static int getUnseenNotificationsCount(SQLiteDatabase db) {
|
||||||
|
int count = 0;
|
||||||
|
Cursor cursor = null;
|
||||||
|
try {
|
||||||
|
cursor = db.rawQuery(SQL_GET_UNSEEN_NOTIFICATIONS_COUNT, null);
|
||||||
|
if (cursor.moveToNext()) {
|
||||||
|
count = cursor.getInt(0);
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
Helper.closeCursor(cursor);
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
public static void markNotificationsSeen(SQLiteDatabase db) {
|
||||||
|
db.execSQL(SQL_MARK_NOTIFICATIONS_SEEN);
|
||||||
|
}
|
||||||
public static void markNotificationsRead(SQLiteDatabase db) {
|
public static void markNotificationsRead(SQLiteDatabase db) {
|
||||||
db.execSQL(SQL_MARK_NOTIFICATIONS_READ);
|
db.execSQL(SQL_MARK_NOTIFICATIONS_READ);
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,25 +15,25 @@ public class NotificationUpdateTask extends AsyncTask<Void, Void, Boolean> {
|
||||||
private List<Long> ids;
|
private List<Long> ids;
|
||||||
private boolean seen;
|
private boolean seen;
|
||||||
private boolean read;
|
private boolean read;
|
||||||
private boolean updateSeen;
|
private boolean updateRead;
|
||||||
|
|
||||||
public NotificationUpdateTask(List<Long> ids, boolean read) {
|
public NotificationUpdateTask(List<Long> ids, boolean seen) {
|
||||||
this(ids, read, false, false);
|
this(ids, false, true, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public NotificationUpdateTask(List<Long> ids, boolean read, boolean seen, boolean updateSeen) {
|
public NotificationUpdateTask(List<Long> ids, boolean read, boolean seen, boolean updateRead) {
|
||||||
this.ids = ids;
|
this.ids = ids;
|
||||||
this.read = read;
|
this.read = read;
|
||||||
this.seen = seen;
|
this.seen = seen;
|
||||||
this.updateSeen = updateSeen;
|
this.updateRead = updateRead;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Boolean doInBackground(Void... params) {
|
protected Boolean doInBackground(Void... params) {
|
||||||
Map<String, String> options = new HashMap<>();
|
Map<String, String> options = new HashMap<>();
|
||||||
options.put("notification_ids", Helper.joinL(ids, ","));
|
options.put("notification_ids", Helper.joinL(ids, ","));
|
||||||
options.put("is_read", String.valueOf(read));
|
options.put("is_seen", String.valueOf(seen));
|
||||||
if (updateSeen) {
|
if (updateRead) {
|
||||||
options.put("is_seen", String.valueOf(seen));
|
options.put("is_read", String.valueOf(read));
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -18,6 +18,7 @@ import io.lbry.browser.exceptions.ApiCallException;
|
||||||
import io.lbry.browser.exceptions.LbryUriException;
|
import io.lbry.browser.exceptions.LbryUriException;
|
||||||
import io.lbry.browser.model.Tag;
|
import io.lbry.browser.model.Tag;
|
||||||
import io.lbry.browser.model.lbryinc.Subscription;
|
import io.lbry.browser.model.lbryinc.Subscription;
|
||||||
|
import io.lbry.browser.utils.Helper;
|
||||||
import io.lbry.browser.utils.Lbry;
|
import io.lbry.browser.utils.Lbry;
|
||||||
import io.lbry.browser.utils.LbryUri;
|
import io.lbry.browser.utils.LbryUri;
|
||||||
|
|
||||||
|
@ -69,6 +70,8 @@ public class LoadSharedUserStateTask extends AsyncTask<Void, Void, Boolean> {
|
||||||
value.has("subscriptions") && !value.isNull("subscriptions") ? value.getJSONArray("subscriptions") : null;
|
value.has("subscriptions") && !value.isNull("subscriptions") ? value.getJSONArray("subscriptions") : null;
|
||||||
JSONArray tags =
|
JSONArray tags =
|
||||||
value.has("tags") && !value.isNull("tags") ? value.getJSONArray("tags") : null;
|
value.has("tags") && !value.isNull("tags") ? value.getJSONArray("tags") : null;
|
||||||
|
JSONArray following =
|
||||||
|
value.has("following") && !value.isNull("following") ? value.getJSONArray("following") : null;
|
||||||
|
|
||||||
if (subscriptionUrls != null) {
|
if (subscriptionUrls != null) {
|
||||||
subscriptions = new ArrayList<>();
|
subscriptions = new ArrayList<>();
|
||||||
|
@ -78,7 +81,8 @@ public class LoadSharedUserStateTask extends AsyncTask<Void, Void, Boolean> {
|
||||||
LbryUri uri = LbryUri.parse(LbryUri.normalize(url));
|
LbryUri uri = LbryUri.parse(LbryUri.normalize(url));
|
||||||
Subscription subscription = new Subscription();
|
Subscription subscription = new Subscription();
|
||||||
subscription.setChannelName(uri.getChannelName());
|
subscription.setChannelName(uri.getChannelName());
|
||||||
subscription.setUrl(url);
|
subscription.setUrl(uri.toString());
|
||||||
|
subscription.setNotificationsDisabled(isNotificationsDisabledForSubUrl(uri.toString(), following));
|
||||||
subscriptions.add(subscription);
|
subscriptions.add(subscription);
|
||||||
if (db != null) {
|
if (db != null) {
|
||||||
DatabaseHelper.createOrUpdateSubscription(subscription, db);
|
DatabaseHelper.createOrUpdateSubscription(subscription, db);
|
||||||
|
@ -125,6 +129,24 @@ public class LoadSharedUserStateTask extends AsyncTask<Void, Void, Boolean> {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected boolean isNotificationsDisabledForSubUrl(String url, JSONArray following) {
|
||||||
|
try {
|
||||||
|
for (int i = 0; i < following.length(); i++) {
|
||||||
|
JSONObject item = following.getJSONObject(i);
|
||||||
|
String itemUrl = Helper.getJSONString("url", null, item);
|
||||||
|
boolean notificationsDisabled = Helper.getJSONBoolean("notificationsDisabled", true, item);
|
||||||
|
if (url.equalsIgnoreCase(itemUrl)) {
|
||||||
|
return notificationsDisabled;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (JSONException ex) {
|
||||||
|
// pass
|
||||||
|
}
|
||||||
|
|
||||||
|
// always default notifications disabled to true
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
protected void onPostExecute(Boolean result) {
|
protected void onPostExecute(Boolean result) {
|
||||||
if (handler != null) {
|
if (handler != null) {
|
||||||
if (result) {
|
if (result) {
|
||||||
|
|
|
@ -2,6 +2,7 @@ package io.lbry.browser.tasks.wallet;
|
||||||
|
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
|
|
||||||
|
import org.json.JSONArray;
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
@ -11,9 +12,11 @@ import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import io.lbry.browser.exceptions.ApiCallException;
|
import io.lbry.browser.exceptions.ApiCallException;
|
||||||
|
import io.lbry.browser.exceptions.LbryUriException;
|
||||||
import io.lbry.browser.model.lbryinc.Subscription;
|
import io.lbry.browser.model.lbryinc.Subscription;
|
||||||
import io.lbry.browser.utils.Helper;
|
import io.lbry.browser.utils.Helper;
|
||||||
import io.lbry.browser.utils.Lbry;
|
import io.lbry.browser.utils.Lbry;
|
||||||
|
import io.lbry.browser.utils.LbryUri;
|
||||||
import io.lbry.browser.utils.Lbryio;
|
import io.lbry.browser.utils.Lbryio;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -40,9 +43,16 @@ public class SaveSharedUserStateTask extends AsyncTask<Void, Void, Boolean> {
|
||||||
protected Boolean doInBackground(Void... params) {
|
protected Boolean doInBackground(Void... params) {
|
||||||
// data to save
|
// data to save
|
||||||
// current subscriptions
|
// current subscriptions
|
||||||
|
List<Subscription> subs = new ArrayList<>(Lbryio.subscriptions);
|
||||||
List<String> subscriptionUrls = new ArrayList<>();
|
List<String> subscriptionUrls = new ArrayList<>();
|
||||||
for (Subscription subscription : Lbryio.subscriptions) {
|
try {
|
||||||
subscriptionUrls.add(subscription.getUrl());
|
for (Subscription subscription : subs) {
|
||||||
|
LbryUri uri = LbryUri.parse(LbryUri.normalize(subscription.getUrl()));
|
||||||
|
subscriptionUrls.add(uri.toString());
|
||||||
|
}
|
||||||
|
} catch (LbryUriException ex) {
|
||||||
|
error = ex;
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// followed tags
|
// followed tags
|
||||||
|
@ -62,6 +72,7 @@ public class SaveSharedUserStateTask extends AsyncTask<Void, Void, Boolean> {
|
||||||
JSONObject value = shared.getJSONObject("value");
|
JSONObject value = shared.getJSONObject("value");
|
||||||
value.put("subscriptions", Helper.jsonArrayFromList(subscriptionUrls));
|
value.put("subscriptions", Helper.jsonArrayFromList(subscriptionUrls));
|
||||||
value.put("tags", Helper.jsonArrayFromList(followedTags));
|
value.put("tags", Helper.jsonArrayFromList(followedTags));
|
||||||
|
value.put("following", buildUpdatedNotificationsDisabledStates(subs));
|
||||||
sharedObject = shared;
|
sharedObject = shared;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -71,6 +82,7 @@ public class SaveSharedUserStateTask extends AsyncTask<Void, Void, Boolean> {
|
||||||
JSONObject value = new JSONObject();
|
JSONObject value = new JSONObject();
|
||||||
value.put("subscriptions", Helper.jsonArrayFromList(subscriptionUrls));
|
value.put("subscriptions", Helper.jsonArrayFromList(subscriptionUrls));
|
||||||
value.put("tags", Helper.jsonArrayFromList(followedTags));
|
value.put("tags", Helper.jsonArrayFromList(followedTags));
|
||||||
|
value.put("following", buildUpdatedNotificationsDisabledStates(subs));
|
||||||
|
|
||||||
sharedObject = new JSONObject();
|
sharedObject = new JSONObject();
|
||||||
sharedObject.put("type", "object");
|
sharedObject.put("type", "object");
|
||||||
|
@ -91,6 +103,26 @@ public class SaveSharedUserStateTask extends AsyncTask<Void, Void, Boolean> {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static JSONArray buildUpdatedNotificationsDisabledStates(List<Subscription> subscriptions) {
|
||||||
|
JSONArray states = new JSONArray();
|
||||||
|
for (Subscription subscription : subscriptions) {
|
||||||
|
if (!Helper.isNullOrEmpty(subscription.getUrl())) {
|
||||||
|
try {
|
||||||
|
JSONObject item = new JSONObject();
|
||||||
|
LbryUri uri = LbryUri.parse(LbryUri.normalize(subscription.getUrl()));
|
||||||
|
item.put("uri", uri.toString());
|
||||||
|
item.put("notificationsDisabled", subscription.isNotificationsDisabled());
|
||||||
|
states.put(item);
|
||||||
|
} catch (JSONException | LbryUriException ex) {
|
||||||
|
// pass
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return states;
|
||||||
|
}
|
||||||
|
|
||||||
protected void onPostExecute(Boolean result) {
|
protected void onPostExecute(Boolean result) {
|
||||||
if (handler != null) {
|
if (handler != null) {
|
||||||
if (result) {
|
if (result) {
|
||||||
|
|
|
@ -33,6 +33,7 @@ public class WalletSendTask extends AsyncTask<Void, Void, Boolean> {
|
||||||
Map<String, Object> options = new HashMap<>();
|
Map<String, Object> options = new HashMap<>();
|
||||||
options.put("addresses", Arrays.asList(recipientAddress));
|
options.put("addresses", Arrays.asList(recipientAddress));
|
||||||
options.put("amount", amount);
|
options.put("amount", amount);
|
||||||
|
options.put("blocking", true);
|
||||||
Lbry.genericApiCall(Lbry.METHOD_WALLET_SEND, options);
|
Lbry.genericApiCall(Lbry.METHOD_WALLET_SEND, options);
|
||||||
} catch (ApiCallException ex) {
|
} catch (ApiCallException ex) {
|
||||||
error = ex;
|
error = ex;
|
||||||
|
|
|
@ -228,8 +228,11 @@ public class ChannelFragment extends BaseFragment implements FetchChannelsListen
|
||||||
((MainActivity) context).showMessage(subscription.isNotificationsDisabled() ?
|
((MainActivity) context).showMessage(subscription.isNotificationsDisabled() ?
|
||||||
R.string.receive_no_notifications : R.string.receive_all_notifications);
|
R.string.receive_no_notifications : R.string.receive_all_notifications);
|
||||||
}
|
}
|
||||||
|
|
||||||
checkIsFollowing();
|
checkIsFollowing();
|
||||||
|
|
||||||
|
if (context != null) {
|
||||||
|
context.sendBroadcast(new Intent(MainActivity.ACTION_SAVE_SHARED_USER_STATE));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -268,11 +271,9 @@ public class ChannelFragment extends BaseFragment implements FetchChannelsListen
|
||||||
checkIsFollowing();
|
checkIsFollowing();
|
||||||
FollowingFragment.resetClaimSearchContent = true;
|
FollowingFragment.resetClaimSearchContent = true;
|
||||||
|
|
||||||
if (Lbry.SDK_READY) {
|
Context context = getContext();
|
||||||
Context context = getContext();
|
if (context != null) {
|
||||||
if (context instanceof MainActivity) {
|
context.sendBroadcast(new Intent(MainActivity.ACTION_SAVE_SHARED_USER_STATE));
|
||||||
((MainActivity) context).saveSharedUserState();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -807,6 +807,10 @@ public class FileViewFragment extends BaseFragment implements
|
||||||
R.string.receive_no_notifications : R.string.receive_all_notifications);
|
R.string.receive_no_notifications : R.string.receive_all_notifications);
|
||||||
}
|
}
|
||||||
checkIsFollowing();
|
checkIsFollowing();
|
||||||
|
|
||||||
|
if (context != null) {
|
||||||
|
context.sendBroadcast(new Intent(MainActivity.ACTION_SAVE_SHARED_USER_STATE));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -21,6 +21,8 @@ import com.google.android.material.textfield.TextInputEditText;
|
||||||
|
|
||||||
import io.lbry.browser.MainActivity;
|
import io.lbry.browser.MainActivity;
|
||||||
import io.lbry.browser.R;
|
import io.lbry.browser.R;
|
||||||
|
import io.lbry.browser.VerificationActivity;
|
||||||
|
import io.lbry.browser.listener.SdkStatusListener;
|
||||||
import io.lbry.browser.listener.WalletSyncListener;
|
import io.lbry.browser.listener.WalletSyncListener;
|
||||||
import io.lbry.browser.model.WalletSync;
|
import io.lbry.browser.model.WalletSync;
|
||||||
import io.lbry.browser.tasks.wallet.DefaultSyncTaskHandler;
|
import io.lbry.browser.tasks.wallet.DefaultSyncTaskHandler;
|
||||||
|
@ -33,7 +35,7 @@ import io.lbry.browser.utils.Lbryio;
|
||||||
import io.lbry.lbrysdk.Utils;
|
import io.lbry.lbrysdk.Utils;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
public class WalletVerificationFragment extends Fragment {
|
public class WalletVerificationFragment extends Fragment implements SdkStatusListener {
|
||||||
|
|
||||||
@Setter
|
@Setter
|
||||||
private WalletSyncListener listener = null;
|
private WalletSyncListener listener = null;
|
||||||
|
@ -86,6 +88,30 @@ public class WalletVerificationFragment extends Fragment {
|
||||||
@Override
|
@Override
|
||||||
public void onResume() {
|
public void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
|
if (!Lbry.SDK_READY) {
|
||||||
|
Context context = getContext();
|
||||||
|
if (context instanceof VerificationActivity) {
|
||||||
|
VerificationActivity activity = (VerificationActivity) context;
|
||||||
|
activity.addSdkStatusListener(this);
|
||||||
|
}
|
||||||
|
Helper.setViewVisibility(loading, View.VISIBLE);
|
||||||
|
Helper.setViewVisibility(textLoading, View.VISIBLE);
|
||||||
|
} else {
|
||||||
|
onSdkReady();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStop() {
|
||||||
|
Context context = getContext();
|
||||||
|
if (context instanceof VerificationActivity) {
|
||||||
|
VerificationActivity activity = (VerificationActivity) context;
|
||||||
|
activity.removeSdkStatusListener(this);
|
||||||
|
}
|
||||||
|
super.onStop();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onSdkReady() {
|
||||||
start();
|
start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue