package com.piusvelte.sonet.loader; import android.content.Context; import android.database.Cursor; import com.piusvelte.sonet.provider.Accounts; import com.piusvelte.sonet.provider.Notifications; import com.piusvelte.sonet.provider.StatusImages; import com.piusvelte.sonet.provider.StatusLinks; import com.piusvelte.sonet.provider.Statuses; import com.piusvelte.sonet.provider.WidgetAccounts; import com.piusvelte.sonet.provider.Widgets; import com.piusvelte.sonet.social.Client; /** * Created by bemmanuel on 7/31/15. */ public class DeleteAccountLoader extends BaseAsyncTaskLoader<Boolean> { private Context mContext; private long mAccountId; private int mService; private String mEntityId; public DeleteAccountLoader(Context context, long accountId, int service, String entityId) { super(context); mContext = context.getApplicationContext(); mAccountId = accountId; mService = service; mEntityId = entityId; } @Override public Boolean loadInBackground() { String[] queryArgs = new String[] { String.valueOf(mAccountId) }; mContext.getContentResolver().delete(Accounts.getContentUri(mContext), Accounts._ID + "=?", queryArgs); // need to delete the statuses and settings for all accounts mContext.getContentResolver().delete(Widgets.getContentUri(mContext), Widgets.ACCOUNT + "=?", queryArgs); Cursor statuses = mContext.getContentResolver().query(Statuses.getContentUri(mContext), new String[] { Statuses._ID }, Statuses.ACCOUNT + "=?", queryArgs, null); if (statuses.moveToFirst()) { int statusIdIndex = statuses.getColumnIndexOrThrow(Statuses._ID); while (!statuses.isAfterLast()) { long statusId = statuses.getLong(statusIdIndex); String[] statusQueryArgs = new String[] { String.valueOf(statusId) }; mContext.getContentResolver().delete(StatusLinks.getContentUri(mContext), StatusLinks.STATUS_ID + "=?", statusQueryArgs); mContext.getContentResolver().delete(StatusImages.getContentUri(mContext), StatusImages.STATUS_ID + "=?", statusQueryArgs); statuses.moveToNext(); } } statuses.close(); mContext.getContentResolver().delete(Statuses.getContentUri(mContext), Statuses.ACCOUNT + "=?", queryArgs); mContext.getContentResolver().delete(WidgetAccounts.getContentUri(mContext), WidgetAccounts.ACCOUNT + "=?", queryArgs); mContext.getContentResolver().delete(Notifications.getContentUri(mContext), Notifications.ACCOUNT + "=?", queryArgs); Client client = new Client.Builder(mContext) .setNetwork(mService) .setAccount(mEntityId) .build(); client.onDelete(); return true; } }