diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 65f63b27d..87d02f34f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -55,6 +55,8 @@
android:exported="false"/>
+
diff --git a/app/src/main/java/app/fedilab/android/client/API.java b/app/src/main/java/app/fedilab/android/client/API.java
index 64a38894f..fee34bb67 100644
--- a/app/src/main/java/app/fedilab/android/client/API.java
+++ b/app/src/main/java/app/fedilab/android/client/API.java
@@ -3195,6 +3195,46 @@ public class API {
}
+ /**
+ * Retrieves notifications for the authenticated account *synchronously*
+ * @param max_id String id max
+ * @return APIResponse
+ */
+ public APIResponse getNotifications( String max_id){
+
+ HashMap params = new HashMap<>();
+ if( max_id != null )
+ params.put("max_id", max_id);
+ params.put("limit","30");
+ if( context == null){
+ apiResponse = new APIResponse();
+ Error error = new Error();
+ apiResponse.setError(error);
+ return apiResponse;
+ }
+ List notifications = new ArrayList<>();
+
+ try {
+ HttpsConnection httpsConnection = new HttpsConnection(context, this.instance);
+ String response = httpsConnection.get(getAbsoluteUrl("/notifications"), 15, params, prefKeyOauthTokenT);
+ apiResponse.setSince_id(httpsConnection.getSince_id());
+ apiResponse.setMax_id(httpsConnection.getMax_id());
+ notifications = parseNotificationResponse(new JSONArray(response));
+ } catch (HttpsConnection.HttpsConnectionException e) {
+ setError(e.getStatusCode(), e);
+ } catch (NoSuchAlgorithmException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (KeyManagementException e) {
+ e.printStackTrace();
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ apiResponse.setNotifications(notifications);
+ return apiResponse;
+ }
+
/**
* Retrieves notifications for the authenticated account *synchronously*
* @param max_id String id max
diff --git a/app/src/main/java/app/fedilab/android/services/BackupNotificationInDataBaseService.java b/app/src/main/java/app/fedilab/android/services/BackupNotificationInDataBaseService.java
index 90a824f97..41ee00db9 100644
--- a/app/src/main/java/app/fedilab/android/services/BackupNotificationInDataBaseService.java
+++ b/app/src/main/java/app/fedilab/android/services/BackupNotificationInDataBaseService.java
@@ -36,9 +36,10 @@ import app.fedilab.android.activities.MainActivity;
import app.fedilab.android.client.API;
import app.fedilab.android.client.APIResponse;
import app.fedilab.android.client.Entities.Account;
-import app.fedilab.android.client.Entities.Status;
+import app.fedilab.android.client.Entities.Notification;
import app.fedilab.android.helper.Helper;
import app.fedilab.android.sqlite.AccountDAO;
+import app.fedilab.android.sqlite.NotificationCacheDAO;
import app.fedilab.android.sqlite.Sqlite;
import app.fedilab.android.sqlite.StatusCacheDAO;
import es.dmoral.toasty.Toasty;
@@ -120,27 +121,27 @@ public class BackupNotificationInDataBaseService extends IntentService {
//Starts from the last recorded ID
Date sinceDate = new StatusCacheDAO(BackupNotificationInDataBaseService.this, db).getLastTootDateCache(StatusCacheDAO.ARCHIVE_CACHE, userId, instance);
String max_id = null;
- List backupStatus = new ArrayList<>();
+ List backupNotifications = new ArrayList<>();
boolean canContinue = true;
do {
- APIResponse apiResponse = api.getStatus(userId, max_id);
+ APIResponse apiResponse = api.getNotifications(max_id);
max_id = apiResponse.getMax_id();
- List statuses = apiResponse.getStatuses();
- for(Status tmpStatus : statuses) {
- if(sinceDate != null && max_id != null && tmpStatus.getCreated_at().before(sinceDate)){
+ List notifications = apiResponse.getNotifications();
+ for(Notification tmpNotification : notifications) {
+ if(sinceDate != null && max_id != null && tmpNotification.getCreated_at().before(sinceDate)){
canContinue = false;
break;
}
- new StatusCacheDAO(BackupNotificationInDataBaseService.this, db).insertStatus(StatusCacheDAO.ARCHIVE_CACHE, tmpStatus, userId, instance);
- backupStatus.add(tmpStatus);
+ new NotificationCacheDAO(BackupNotificationInDataBaseService.this, db).insertNotification(tmpNotification, userId, instance);
+ backupNotifications.add(tmpNotification);
}
}while (max_id != null && canContinue);
- if(backupStatus.size() > 0){
+ if(backupNotifications.size() > 0){
Intent backupIntent = new Intent(Helper.INTENT_BACKUP_FINISH);
LocalBroadcastManager.getInstance(this).sendBroadcast(backupIntent);
}
- message = getString(R.string.data_backup_success, String.valueOf(backupStatus.size()));
+ message = getString(R.string.data_backup_success, String.valueOf(backupNotifications.size()));
Intent mainActivity = new Intent(BackupNotificationInDataBaseService.this, MainActivity.class);
mainActivity.putExtra(Helper.INTENT_ACTION, Helper.BACKUP_INTENT);
String title = getString(R.string.data_backup_toots, account.getAcct());
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 3d25c7fb7..0d075bef7 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -451,6 +451,7 @@
Show pinned
No matching result found!
Backup toots for %1$s
+ Backup notifications for %1$s
%1$s new toots have been imported
- No