diff options
Diffstat (limited to 'app')
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 { } + /** + * Remove a bundle from db + * + */ + private void removeIntent(BaseAccount account, String target_id) throws DBException { + if (db == null) { + throw new DBException("db is null. Wrong initialization."); + } + if(acc |