summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas <tschneider.ac@gmail.com>2024-01-09 15:57:12 +0100
committerThomas <tschneider.ac@gmail.com>2024-01-09 15:57:12 +0100
commit2edfd8c9452164f110ff87c629b17cdd36dff5f8 (patch)
tree066f009be522419e84fc79af74c79890f85cd793
parent2e20e78b7f40a1010348c03bffc2f1c68c48783e (diff)
All accounts are cached in db before being in Intent
-rw-r--r--app/src/main/java/app/fedilab/android/BaseMainActivity.java8
-rw-r--r--app/src/main/java/app/fedilab/android/activities/AboutActivity.java4
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/activities/AccountReportActivity.java4
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/activities/ComposeActivity.java2
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/activities/EditProfileActivity.java2
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/activities/PartnerShipActivity.java4
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/activities/ProfileActivity.java12
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/activities/ReportActivity.java8
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/activities/TimelineActivity.java4
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/activities/admin/AdminAccountActivity.java4
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/activities/admin/AdminReportActivity.java4
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/client/entities/app/CachedBundle.java166
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/helper/CrossActionHelper.java8
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/helper/Helper.java77
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/helper/SpannableHelper.java8
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/drawer/AccountAdapter.java10
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/drawer/AccountFollowRequestAdapter.java4
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/drawer/AccountsSearchTopBarAdapter.java4
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/drawer/NotificationAdapter.java11
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java12
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/drawer/SuggestionAdapter.java4
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/drawer/admin/AdminAccountAdapter.java4
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/fragment/media/FragmentMediaProfile.java4
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonAccount.java5
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonTimeline.java3
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentProfileTimeline.java6
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/pageadapter/FedilabProfilePageAdapter.java6
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/pageadapter/FedilabProfileTLPageAdapter.java4
-rw-r--r--app/src/main/java/app/fedilab/android/sqlite/Sqlite.java7
-rw-r--r--app/src/main/java/app/fedilab/android/ui/fragment/FragmentLoginPickInstanceMastodon.java4
30 files changed, 295 insertions, 108 deletions
diff --git a/app/src/main/java/app/fedilab/android/BaseMainActivity.java b/app/src/main/java/app/fedilab/android/BaseMainActivity.java
index ff07e4b1e..8c321234c 100644
--- a/app/src/main/java/app/fedilab/android/BaseMainActivity.java
+++ b/app/src/main/java/app/fedilab/android/BaseMainActivity.java
@@ -662,7 +662,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
Intent intentAccount = new Intent(activity, ProfileActivity.class);
Bundle args = new Bundle();
args.putSerializable(Helper.ARG_ACCOUNT, account);
- new CachedBundle(activity).insertBundle(args, bundleId -> {
+ new CachedBundle(activity).insertBundle(args, currentAccount, bundleId -> {
Bundle bundleCached = new Bundle();
bundleCached.putLong(Helper.ARG_INTENT_ID, bundleId);
intentAccount.putExtras(bundleCached);
@@ -673,7 +673,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
Intent intentContext = new Intent(activity, ContextActivity.class);
Bundle args = new Bundle();
args.putSerializable(Helper.ARG_STATUS, status);
- new CachedBundle(activity).insertBundle(args, bundleId -> {
+ new CachedBundle(activity).insertBundle(args, currentAccount, bundleId -> {
Bundle bundleCached = new Bundle();
bundleCached.putLong(Helper.ARG_INTENT_ID, bundleId);
intentContext.putExtras(bundleCached);
@@ -1048,7 +1048,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
Intent intent = new Intent(activity, ProfileActivity.class);
Bundle args = new Bundle();
args.putSerializable(Helper.ARG_ACCOUNT, account);
- new CachedBundle(activity).insertBundle(args, bundleId -> {
+ new CachedBundle(activity).insertBundle(args, currentAccount, bundleId -> {
Bundle bundle = new Bundle();
bundle.putLong(Helper.ARG_INTENT_ID, bundleId);
intent.putExtras(bundle);
@@ -1435,7 +1435,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
Intent intent = new Intent(BaseMainActivity.this, ProfileActivity.class);
Bundle args = new Bundle();
args.putSerializable(Helper.ARG_ACCOUNT, currentAccount.mastodon_account);
- new CachedBundle(BaseMainActivity.this).insertBundle(args, bundleId -> {
+ new CachedBundle(BaseMainActivity.this).insertBundle(args, currentAccount, bundleId -> {
Bundle bundle = new Bundle();
bundle.putLong(Helper.ARG_INTENT_ID, bundleId);
intent.putExtras(bundle);
diff --git a/app/src/main/java/app/fedilab/android/activities/AboutActivity.java b/app/src/main/java/app/fedilab/android/activities/AboutActivity.java
index ee6862df3..fe57ba51e 100644
--- a/app/src/main/java/app/fedilab/android/activities/AboutActivity.java
+++ b/app/src/main/java/app/fedilab/android/activities/AboutActivity.java
@@ -15,6 +15,8 @@ package app.fedilab.android.activities;
* see <http://www.gnu.org/licenses>. */
+import static app.fedilab.android.BaseMainActivity.currentAccount;
+
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
@@ -122,7 +124,7 @@ public class AboutActivity extends BaseBarActivity {
Intent intent = new Intent(AboutActivity.this, ProfileActivity.class);
Bundle args = new Bundle();
args.putSerializable(Helper.ARG_ACCOUNT, account);
- new CachedBundle(AboutActivity.this).insertBundle(args, bundleId -> {
+ new CachedBundle(AboutActivity.this).insertBundle(args, currentAccount, bundleId -> {
Bundle bundle = new Bundle();
bundle.putLong(Helper.ARG_INTENT_ID, bundleId);
intent.putExtras(bundle);
diff --git a/app/src/main/java/app/fedilab/android/mastodon/activities/AccountReportActivity.java b/app/src/main/java/app/fedilab/android/mastodon/activities/AccountReportActivity.java
index 46c3e9d3a..72bd611bd 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/activities/AccountReportActivity.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/activities/AccountReportActivity.java
@@ -15,6 +15,8 @@ package app.fedilab.android.mastodon.activities;
* see <http://www.gnu.org/licenses>. */
+import static app.fedilab.android.BaseMainActivity.currentAccount;
+
import android.app.Activity;
import android.graphics.PorterDuff;
import android.os.Bundle;
@@ -66,7 +68,7 @@ public class AccountReportActivity extends BaseBarActivity {
Bundle args = getIntent().getExtras();
if (args != null) {
long bundleId = args.getLong(Helper.ARG_INTENT_ID, -1);
- new CachedBundle(AccountReportActivity.this).getBundle(bundleId, this::initializeAfterBundle);
+ new CachedBundle(AccountReportActivity.this).getBundle(bundleId, currentAccount, this::initializeAfterBundle);
} else {
initializeAfterBundle(null);
}
diff --git a/app/src/main/java/app/fedilab/android/mastodon/activities/ComposeActivity.java b/app/src/main/java/app/fedilab/android/mastodon/activities/ComposeActivity.java
index 36b9082e3..5c52063d3 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/activities/ComposeActivity.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/activities/ComposeActivity.java
@@ -488,7 +488,7 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana
if(b != null) {
long bundleId = b.getLong(Helper.ARG_INTENT_ID, -1);
if(bundleId != -1 ) {
- new CachedBundle(ComposeActivity.this).getBundle(bundleId, this::initializeAfterBundle);
+ new CachedBundle(ComposeActivity.this).getBundle(bundleId, currentAccount, this::initializeAfterBundle);
} else {
initializeAfterBundle(b);
}
diff --git a/app/src/main/java/app/fedilab/android/mastodon/activities/EditProfileActivity.java b/app/src/main/java/app/fedilab/android/mastodon/activities/EditProfileActivity.java
index c0b895510..77fa5ce5f 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/activities/EditProfileActivity.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/activities/EditProfileActivity.java
@@ -263,7 +263,7 @@ public class EditProfileActivity extends BaseBarActivity {
Bundle args = new Bundle();
args.putBoolean(Helper.RECEIVE_REDRAW_PROFILE, true);
args.putSerializable(Helper.ARG_ACCOUNT, account);
- new CachedBundle(EditProfileActivity.this).insertBundle(args, bundleId -> {
+ new CachedBundle(EditProfileActivity.this).insertBundle(args, currentAccount, bundleId -> {
Bundle bundle = new Bundle();
bundle.putLong(Helper.ARG_INTENT_ID, bundleId);
Intent intentBD = new Intent(Helper.BROADCAST_DATA);
diff --git a/app/src/main/java/app/fedilab/android/mastodon/activities/PartnerShipActivity.java b/app/src/main/java/app/fedilab/android/mastodon/activities/PartnerShipActivity.java
index 53905ab8c..7c1e9037b 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/activities/PartnerShipActivity.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/activities/PartnerShipActivity.java
@@ -15,6 +15,8 @@ package app.fedilab.android.mastodon.activities;
* see <http://www.gnu.org/licenses>. */
+import static app.fedilab.android.BaseMainActivity.currentAccount;
+
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
@@ -81,7 +83,7 @@ public class PartnerShipActivity extends BaseBarActivity {
Intent intent = new Intent(PartnerShipActivity.this, ProfileActivity.class);
Bundle args = new Bundle();
args.putSerializable(Helper.ARG_ACCOUNT, account);
- new CachedBundle(PartnerShipActivity.this).insertBundle(args, bundleId -> {
+ new CachedBundle(PartnerShipActivity.this).insertBundle(args, currentAccount, bundleId -> {
Bundle bundle = new Bundle();
bundle.putLong(Helper.ARG_INTENT_ID, bundleId);
intent.putExtras(bundle);
diff --git a/app/src/main/java/app/fedilab/android/mastodon/activities/ProfileActivity.java b/app/src/main/java/app/fedilab/android/mastodon/activities/ProfileActivity.java
index b0b10452f..1106067de 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/activities/ProfileActivity.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/activities/ProfileActivity.java
@@ -137,7 +137,7 @@ public class ProfileActivity extends BaseActivity {
if (args != null) {
long bundleId = args.getLong(Helper.ARG_INTENT_ID, -1);
if(bundleId != -1 ) {
- new CachedBundle(ProfileActivity.this).getBundle(bundleId, bundle -> {
+ new CachedBundle(ProfileActivity.this).getBundle(bundleId, currentAccount, bundle -> {
Account accountReceived = (Account) bundle.getSerializable(Helper.ARG_ACCOUNT);
if (bundle.getBoolean(Helper.RECEIVE_REDRAW_PROFILE, false) && accountReceived != null) {
if (account != null && accountReceived.id != null && account.id != null && accountReceived.id.equalsIgnoreCase(account.id)) {
@@ -190,7 +190,7 @@ public class ProfileActivity extends BaseActivity {
homeMuted = false;
if (args != null) {
long bundleId = args.getLong(Helper.ARG_INTENT_ID, -1);
- new CachedBundle(ProfileActivity.this).getBundle(bundleId, this::initializeAfterBundle);
+ new CachedBundle(ProfileActivity.this).getBundle(bundleId, currentAccount, this::initializeAfterBundle);
} else {
initializeAfterBundle(null);
}
@@ -468,7 +468,7 @@ public class ProfileActivity extends BaseActivity {
Bundle args = new Bundle();
args.putSerializable(Helper.ARG_ACCOUNT, account);
args.putSerializable(Helper.ARG_CHECK_REMOTELY, true);
- new CachedBundle(ProfileActivity.this).insertBundle(args, bundleId -> {
+ new CachedBundle(ProfileActivity.this).insertBundle(args, currentAccount, bundleId -> {
Bundle bundle = new Bundle();
bundle.putLong(Helper.ARG_INTENT_ID, bundleId);
intent.putExtras(bundle);
@@ -655,7 +655,7 @@ public class ProfileActivity extends BaseActivity {
Intent intent = new Intent(ProfileActivity.this, ProfileActivity.class);
Bundle args = new Bundle();
args.putSerializable(Helper.ARG_ACCOUNT, account);
- new CachedBundle(ProfileActivity.this).insertBundle(args, bundleId -> {
+ new CachedBundle(ProfileActivity.this).insertBundle(args, currentAccount, bundleId -> {
Bundle bundle = new Bundle();
bundle.putLong(Helper.ARG_INTENT_ID, bundleId);
intent.putExtras(bundle);
@@ -1055,7 +1055,7 @@ public class ProfileActivity extends BaseActivity {
Bundle args = new Bundle();
args.putSerializable(Helper.ARG_ACCOUNT_MENTION, account);
args.putString(Helper.ARG_VISIBILITY, "direct");
- new CachedBundle(ProfileActivity.this).insertBundle(args, bundleId -> {
+ new CachedBundle(ProfileActivity.this).insertBundle(args, currentAccount, bundleId -> {
Bundle bundle = new Bundle();
bundle.putLong(Helper.ARG_INTENT_ID, bundleId);
intent.putExtras(bundle);
@@ -1146,7 +1146,7 @@ public class ProfileActivity extends BaseActivity {
intent = new Intent(ProfileActivity.this, ComposeActivity.class);
Bundle args = new Bundle();
args.putSerializable(Helper.ARG_ACCOUNT_MENTION, account);
- new CachedBundle(ProfileActivity.this).insertBundle(args, bundleId -> {
+ new CachedBundle(ProfileActivity.this).insertBundle(args, currentAccount, bundleId -> {
Bundle bundle = new Bundle();
bundle.putLong(Helper.ARG_INTENT_ID, bundleId);
intent.putExtras(bundle);
diff --git a/app/src/main/java/app/fedilab/android/mastodon/activities/ReportActivity.java b/app/src/main/java/app/fedilab/android/mastodon/activities/ReportActivity.java
index 0f3c3e55b..4107a5724 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/activities/ReportActivity.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/activities/ReportActivity.java
@@ -14,6 +14,8 @@ package app.fedilab.android.mastodon.activities;
* You should have received a copy of the GNU General Public License along with Fedilab; if not,
* see <http://www.gnu.org/licenses>. */
+import static app.fedilab.android.BaseMainActivity.currentAccount;
+
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
@@ -75,7 +77,7 @@ public class ReportActivity extends BaseBarActivity {
if(args != null) {
long bundleId = args.getLong(Helper.ARG_INTENT_ID, -1);
if(bundleId != -1 ) {
- new CachedBundle(ReportActivity.this).getBundle(bundleId, this::initializeAfterBundle);
+ new CachedBundle(ReportActivity.this).getBundle(bundleId, currentAccount, this::initializeAfterBundle);
} else {
initializeAfterBundle(args);
}
@@ -241,7 +243,7 @@ public class ReportActivity extends BaseBarActivity {
status.isChecked = true;
args.putSerializable(Helper.ARG_STATUS_REPORT, status);
}
- new CachedBundle(ReportActivity.this).insertBundle(args, bundleId -> {
+ new CachedBundle(ReportActivity.this).insertBundle(args, currentAccount, bundleId -> {
Bundle bundle = new Bundle();
bundle.putLong(Helper.ARG_INTENT_ID, bundleId);
fragment.setArguments(bundle);
@@ -271,7 +273,7 @@ public class ReportActivity extends BaseBarActivity {
status.isChecked = true;
args.putSerializable(Helper.ARG_STATUS_REPORT, status);
}
- new CachedBundle(ReportActivity.this).insertBundle(args, bundleId -> {
+ new CachedBundle(ReportActivity.this).insertBundle(args, currentAccount, bundleId -> {
Bundle bundle = new Bundle();
bundle.putLong(Helper.ARG_INTENT_ID, bundleId);
fragment.setArguments(bundle);
diff --git a/app/src/main/java/app/fedilab/android/mastodon/activities/TimelineActivity.java b/app/src/main/java/app/fedilab/android/mastodon/activities/TimelineActivity.java
index 8fc81746e..cb2e11097 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/activities/TimelineActivity.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/activities/TimelineActivity.java
@@ -14,6 +14,8 @@ package app.fedilab.android.mastodon.activities;
* You should have received a copy of the GNU General Public License along with Fedilab; if not,
* see <http://www.gnu.org/licenses>. */
+import static app.fedilab.android.BaseMainActivity.currentAccount;
+
import android.os.Bundle;
import android.view.MenuItem;
@@ -65,7 +67,7 @@ public class TimelineActivity extends BaseBarActivity {
if (status != null) {
args.putSerializable(Helper.ARG_STATUS, status);
}
- new CachedBundle(TimelineActivity.this).insertBundle(args, bundleId -> {
+ new CachedBundle(TimelineActivity.this).insertBundle(args, currentAccount, bundleId -> {
Bundle bundle = new Bundle();
bundle.putLong(Helper.ARG_INTENT_ID, bundleId);
fragmentMastodonTimeline.setArguments(bundle);
diff --git a/app/src/main/java/app/fedilab/android/mastodon/activities/admin/AdminAccountActivity.java b/app/src/main/java/app/fedilab/android/mastodon/activities/admin/AdminAccountActivity.java
index 7f0794c34..a78191e5c 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/activities/admin/AdminAccountActivity.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/activities/admin/AdminAccountActivity.java
@@ -15,6 +15,8 @@ package app.fedilab.android.mastodon.activities.admin;
* see <http://www.gnu.org/licenses>. */
+import static app.fedilab.android.BaseMainActivity.currentAccount;
+
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Intent;
@@ -99,7 +101,7 @@ public class AdminAccountActivity extends BaseActivity {
if (args != null) {
long bundleId = args.getLong(Helper.ARG_INTENT_ID, -1);
- new CachedBundle(AdminAccountActivity.this).getBundle(bundleId, this::initializeAfterBundle);
+ new CachedBundle(AdminAccountActivity.this).getBundle(bundleId, currentAccount, this::initializeAfterBundle);
} else {
initializeAfterBundle(null);
}
diff --git a/app/src/main/java/app/fedilab/android/mastodon/activities/admin/AdminReportActivity.java b/app/src/main/java/app/fedilab/android/mastodon/activities/admin/AdminReportActivity.java
index cc11c694f..fb170a487 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/activities/admin/AdminReportActivity.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/activities/admin/AdminReportActivity.java
@@ -15,6 +15,8 @@ package app.fedilab.android.mastodon.activities.admin;
* see <http://www.gnu.org/licenses>. */
+import static app.fedilab.android.BaseMainActivity.currentAccount;
+
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Intent;
@@ -105,7 +107,7 @@ public class AdminReportActivity extends BaseBarActivity {
if (args != null) {
long bundleId = args.getLong(Helper.ARG_INTENT_ID, -1);
- new CachedBundle(AdminReportActivity.this).getBundle(bundleId, this::initializeAfterBundle);
+ new CachedBundle(AdminReportActivity.this).getBundle(bundleId, currentAccount, this::initializeAfterBundle);
} else {
initializeAfterBundle(null);
}
diff --git a/app/src/main/java/app/fedilab/android/mastodon/client/entities/app/CachedBundle.java b/app/src/main/java/app/fedilab/android/mastodon/client/entities/app/CachedBundle.java
index 87e7163ce..718023b93 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/client/entities/app/CachedBundle.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/client/entities/app/CachedBundle.java
@@ -24,6 +24,8 @@ import android.os.Looper;
import android.os.Parcel;
import android.util.Base64;
+import com.google.gson.annotations.SerializedName;
+
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -32,6 +34,7 @@ import java.util.Date;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
+import app.fedilab.android.mastodon.client.entities.api.Status;
import app.fedilab.android.mastodon.exception.DBException;
import app.fedilab.android.mastodon.helper.Helper;
import app.fedilab.android.sqlite.Sqlite;
@@ -43,6 +46,10 @@ public class CachedBundle {
public String id;
public Bundle bundle;
+ public CacheType cacheType;
+ public String instance;
+ public String user_id;
+ public String target_id;
public Date created_at;
private SQLiteDatabase db;
@@ -64,14 +71,46 @@ public class CachedBundle {
* @return long - db id
* @throws DBException exception with database
*/
- private long insertIntent(Bundle bundle) throws DBException {
+ private long insertIntent(Bundle bundle, BaseAccount currentUser) throws DBException {
if (db == null) {
throw new DBException("db is null. Wrong initialization.");
}
ContentValues values = new ContentValues();
values.put(Sqlite.COL_BUNDLE, serializeBundle(bundle));
values.put(Sqlite.COL_CREATED_AT, Helper.dateToString(new Date()));
- //Inserts token
+ values.put(Sqlite.COL_TYPE, CacheType.ARGS.getValue());
+ if( bundle.containsKey(Helper.ARG_ACCOUNT) && currentUser != null) {
+ ContentValues valuesAccount = new ContentValues();
+ Bundle bundleAccount = new Bundle();
+ Account account = (Account) bundle.getSerializable(Helper.ARG_ACCOUNT);
+ if(account != null) {
+ bundleAccount.putSerializable(Helper.ARG_ACCOUNT, account);
+ valuesAccount.put(Sqlite.COL_BUNDLE, serializeBundle(bundleAccount));
+ valuesAccount.put(Sqlite.COL_CREATED_AT, Helper.dateToString(new Date()));
+ valuesAccount.put(Sqlite.COL_TARGET_ID, account.user_id);
+ valuesAccount.put(Sqlite.COL_USER_ID, currentUser.user_id);
+ valuesAccount.put(Sqlite.COL_INSTANCE, currentUser.instance);
+ valuesAccount.put(Sqlite.COL_TYPE, CacheType.ACCOUNT.getValue());
+ removeIntent(currentUser, account.user_id);
+ db.insertOrThrow(Sqlite.TABLE_INTENT, null, valuesAccount);
+ }
+ }
+ if( bundle.containsKey(Helper.ARG_STATUS) && currentUser != null) {
+ ContentValues valuesAccount = new ContentValues();
+ Bundle bundleStatus = new Bundle();
+ Status status = (Status) bundle.getSerializable(Helper.ARG_STATUS);
+ if(status != null) {
+ bundleStatus.putSerializable(Helper.ARG_STATUS, status);
+ valuesAccount.put(Sqlite.COL_BUNDLE, serializeBundle(bundleStatus));
+ valuesAccount.put(Sqlite.COL_CREATED_AT, Helper.dateToString(new Date()));
+ valuesAccount.put(Sqlite.COL_TARGET_ID, status.id);
+ valuesAccount.put(Sqlite.COL_USER_ID, currentUser.user_id);
+ valuesAccount.put(Sqlite.COL_INSTANCE, currentUser.instance);
+ valuesAccount.put(Sqlite.COL_TYPE, CacheType.STATUS.getValue());
+ removeIntent(currentUser, status.id);
+ db.insertOrThrow(Sqlite.TABLE_INTENT, null, valuesAccount);
+ }
+ }
try {
return db.insertOrThrow(Sqlite.TABLE_INTENT, null, values);
} catch (Exception e) {
@@ -81,20 +120,32 @@ public class CachedBundle {
}
public interface BundleCallback{
- public void get(Bundle bundle);
+ void get(Bundle bundle);
}
public interface BundleInsertCallback{
- public void inserted(long bundleId);
+ void inserted(long bundleId);
}
- public void getBundle(long id, BundleCallback callback) {
+ public void getBundle(long id, BaseAccount Account, BundleCallback callback) {
new Thread(()->{
Bundle bundle = null;
try {
CachedBundle cachedBundle = getCachedBundle(String.valueOf(id));
if (cachedBundle != null) {
bundle = cachedBundle.bundle;
+ if(bundle != null && bundle.containsKey(Helper.ARG_CACHED_ACCOUNT_ID)) {
+ Account cachedAccount = getCachedAccount(Account, bundle.getString(Helper.ARG_CACHED_ACCOUNT_ID));
+ if(cachedAccount != null) {
+ bundle.putSerializable(Helper.ARG_ACCOUNT, cachedAccount);
+ }
+ }
+ if(bundle != null && bundle.containsKey(Helper.ARG_CACHED_STATUS_ID)) {
+ Status cachedStatus = getCachedStatus(Account, bundle.getString(Helper.ARG_CACHED_STATUS_ID));
+ if(cachedStatus != null) {
+ bundle.putSerializable(Helper.ARG_STATUS, cachedStatus);
+ }
+ }
}
removeIntent(String.valueOf(id));
} catch (DBException ignored) {}
@@ -105,11 +156,11 @@ public class CachedBundle {
}).start();
}
- public void insertBundle(Bundle bundle, BundleInsertCallback callback) {
+ public void insertBundle(Bundle bundle, BaseAccount Account, BundleInsertCallback callback) {
new Thread(()->{
long dbBundleId = -1;
try {
- dbBundleId = insertIntent(bundle);
+ dbBundleId = insertIntent(bundle, Account);
} catch (DBException ignored) {}
Handler mainHandler = new Handler(Looper.getMainLooper());
long finalDbBundleId = dbBundleId;
@@ -118,6 +169,66 @@ public class CachedBundle {
}).start();
}
+
+
+ /**
+ * Returns a bundle by targeted account id
+ *
+ * @param target_id String
+ * @return Account {@link Account}
+ */
+ private Account getCachedAccount(BaseAccount account, String target_id) throws DBException {
+ if (db == null) {
+ throw new DBException("db is null. Wrong initialization.");
+ }
+ if(account == null || target_id == null) {
+ return null;
+ }
+ try {
+ Cursor c = db.query(Sqlite.TABLE_INTENT, null, Sqlite.COL_USER_ID + " = '" + account.user_id + "' AND "
+ + Sqlite.COL_INSTANCE + " = '" + account.instance+ "' AND "
+ + Sqlite.COL_TYPE + " = '" + CacheType.ACCOUNT.getValue() + "' AND "
+ + Sqlite.COL_TARGET_ID + " = '" + target_id + "'", null, null, null, null, "1");
+ CachedBundle cachedBundle = cursorToCachedBundle(c);
+ if(cachedBundle != null && cachedBundle.bundle.containsKey(Helper.ARG_ACCOUNT) ) {
+ return (Account) cachedBundle.bundle.getSerializable(Helper.ARG_ACCOUNT);
+ }
+ } catch (Exception e) {
+ return null;
+ }
+ return null;
+ }
+
+
+ /**
+ * Returns a bundle by targeted status id
+ *
+ * @param target_id String
+ * @return Status {@link Status}
+ */
+ private Status getCachedStatus(BaseAccount account, String target_id) throws DBException {
+ if (db == null) {
+ throw new DBException("db is null. Wrong initialization.");
+ }
+ if(account == null || target_id == null) {
+ return null;
+ }
+ try {
+ Cursor c = db.query(Sqlite.TABLE_INTENT, null, Sqlite.COL_USER_ID + " = '" + account.user_id + "' AND "
+ + Sqlite.COL_INSTANCE + " = '" + account.instance+ "' AND "
+ + Sqlite.COL_TYPE + " = '" + CacheType.STATUS.getValue() + "' AND "
+ + Sqlite.COL_TARGET_ID + " = '" + target_id + "'", null, null, null, null, "1");
+ CachedBundle cachedBundle = cursorToCachedBundle(c);
+ if(cachedBundle != null && cachedBundle.bundle.containsKey(Helper.ARG_STATUS) ) {
+ return (Status) cachedBundle.bundle.getSerializable(Helper.ARG_STATUS);
+ }
+ } catch (Exception e) {
+ return null;
+ }
+ return null;
+ }
+
+
/**
* Returns a bundle by its ID
*
@@ -149,6 +260,22 @@ public class CachedBundle {
}
+