diff --git a/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java b/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java index 32d8b89f9..ef9ea90d0 100644 --- a/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java +++ b/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java @@ -62,7 +62,6 @@ import timber.log.Timber; ) public class CommonsApplication extends Application { - private MWApi api; private Account currentAccount = null; // Unlike a savings account... public static final String API_URL = "https://commons.wikimedia.org/w/api.php"; public static final String IMAGE_URL_BASE = "https://upload.wikimedia.org/wikipedia/commons"; @@ -81,13 +80,35 @@ public class CommonsApplication extends Application { public static final String FEEDBACK_EMAIL = "commons-app-android@googlegroups.com"; public static final String FEEDBACK_EMAIL_SUBJECT = "Commons Android App (%s) Feedback"; - public RequestQueue volleyQueue; + private static CommonsApplication instance = null; + private AbstractHttpClient httpClient = null; + private MWApi api = null; + private CacheController cacheData = null; + private RequestQueue volleyQueue = null; - public CacheController cacheData; + /** + * This should not be called by ANY application code (other than the magic Android glue) + * Use CommonsApplication.getInstance() instead to get the singleton. + */ + public CommonsApplication() { + CommonsApplication.instance = this; + } - public static CommonsApplication app; + public static CommonsApplication getInstance() { + if(instance == null) { + instance = new CommonsApplication(); + } + return instance; + } - public static AbstractHttpClient createHttpClient() { + public AbstractHttpClient getHttpClient() { + if(httpClient == null) { + httpClient = newHttpClient(); + } + return httpClient; + } + + private AbstractHttpClient newHttpClient() { BasicHttpParams params = new BasicHttpParams(); SchemeRegistry schemeRegistry = new SchemeRegistry(); schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80)); @@ -98,14 +119,36 @@ public class CommonsApplication extends Application { return new DefaultHttpClient(cm, params); } - public static MWApi createMWApi() { - return new MWApi(API_URL, createHttpClient()); + public MWApi getMWApi() { + if(api == null) { + api = newMWApi(); + } + return api; + } + + private MWApi newMWApi() { + return new MWApi(API_URL, getHttpClient()); + } + + public CacheController getCacheData() { + if(cacheData == null) { + cacheData = new CacheController(); + } + return cacheData; + } + + public RequestQueue getVolleyQueue() { + if(volleyQueue == null) { + DiskBasedCache cache = new DiskBasedCache(getCacheDir(), 16 * 1024 * 1024); + volleyQueue = new RequestQueue(cache, new BasicNetwork(new HurlStack())); + volleyQueue.start(); + } + return volleyQueue; } @Override public void onCreate() { super.onCreate(); - app = this; Timber.plant(new Timber.DebugTree()); @@ -116,9 +159,8 @@ public class CommonsApplication extends Application { } // Fire progress callbacks for every 3% of uploaded content System.setProperty("in.yuvi.http.fluent.PROGRESS_TRIGGER_THRESHOLD", "3.0"); - api = createMWApi(); - ImageLoaderConfiguration imageLoaderConfiguration = new ImageLoaderConfiguration.Builder(getApplicationContext()) + ImageLoaderConfiguration imageLoaderConfiguration = new ImageLoaderConfiguration.Builder(this) .discCache(new TotalSizeLimitedDiscCache(StorageUtils.getCacheDirectory(this), 128 * 1024 * 1024)) .build(); ImageLoader.getInstance().init(imageLoaderConfiguration); @@ -147,13 +189,6 @@ public class CommonsApplication extends Application { } }; } - - //For caching area -> categories - cacheData = new CacheController(); - - DiskBasedCache cache = new DiskBasedCache(getCacheDir(), 16 * 1024 * 1024); - volleyQueue = new RequestQueue(cache, new BasicNetwork(new HurlStack())); - volleyQueue.start(); } private com.android.volley.toolbox.ImageLoader imageLoader; @@ -161,7 +196,7 @@ public class CommonsApplication extends Application { public com.android.volley.toolbox.ImageLoader getImageLoader() { if(imageLoader == null) { - imageLoader = new com.android.volley.toolbox.ImageLoader(volleyQueue, new com.android.volley.toolbox.ImageLoader.ImageCache() { + imageLoader = new com.android.volley.toolbox.ImageLoader(getVolleyQueue(), new com.android.volley.toolbox.ImageLoader.ImageCache() { @Override public Bitmap getBitmap(String key) { return imageCache.get(key); @@ -176,13 +211,9 @@ public class CommonsApplication extends Application { } return imageLoader; } - - public MWApi getApi() { - return api; - } /** - * @return Accout|null + * @return Account|null */ public Account getCurrentAccount() { if(currentAccount == null) { @@ -203,21 +234,12 @@ public class CommonsApplication extends Application { return false; // This should never happen } - accountManager.invalidateAuthToken(AccountUtil.accountType(), api.getAuthCookie()); + accountManager.invalidateAuthToken(AccountUtil.accountType(), getMWApi().getAuthCookie()); try { String authCookie = accountManager.blockingGetAuthToken(curAccount, "", false); - api.setAuthCookie(authCookie); + getMWApi().setAuthCookie(authCookie); return true; - } catch (OperationCanceledException e) { - e.printStackTrace(); - return false; - } catch (AuthenticatorException e) { - e.printStackTrace(); - return false; - } catch (IOException e) { - e.printStackTrace(); - return false; - } catch (NullPointerException e) { + } catch (OperationCanceledException | NullPointerException | IOException | AuthenticatorException e) { e.printStackTrace(); return false; } diff --git a/app/src/main/java/fr/free/nrw/commons/EventLog.java b/app/src/main/java/fr/free/nrw/commons/EventLog.java index 694c03b6b..dea4d7c23 100644 --- a/app/src/main/java/fr/free/nrw/commons/EventLog.java +++ b/app/src/main/java/fr/free/nrw/commons/EventLog.java @@ -6,6 +6,7 @@ import android.os.Build; import android.preference.PreferenceManager; import org.apache.http.HttpResponse; +import org.apache.http.impl.client.AbstractHttpClient; import org.json.JSONException; import org.json.JSONObject; @@ -30,10 +31,10 @@ public class EventLog { boolean allSuccess = true; // Not using the default URL connection, since that seems to have different behavior than the rest of the code for(LogBuilder logBuilder: logBuilders) { - HttpURLConnection conn; try { URL url = logBuilder.toUrl(); - HttpResponse response = Http.get(url.toString()).use(CommonsApplication.createHttpClient()).asResponse(); + AbstractHttpClient httpClient = CommonsApplication.getInstance().getHttpClient(); + HttpResponse response = Http.get(url.toString()).use(httpClient).asResponse(); if(response.getStatusLine().getStatusCode() != 204) { allSuccess = false; diff --git a/app/src/main/java/fr/free/nrw/commons/MediaDataExtractor.java b/app/src/main/java/fr/free/nrw/commons/MediaDataExtractor.java index 344546c7a..44e7b8242 100644 --- a/app/src/main/java/fr/free/nrw/commons/MediaDataExtractor.java +++ b/app/src/main/java/fr/free/nrw/commons/MediaDataExtractor.java @@ -66,7 +66,7 @@ public class MediaDataExtractor { throw new IllegalStateException("Tried to call MediaDataExtractor.fetch() again."); } - MWApi api = CommonsApplication.createMWApi(); + MWApi api = CommonsApplication.getInstance().getMWApi(); ApiResult result = api.action("query") .param("prop", "revisions") .param("titles", filename) diff --git a/app/src/main/java/fr/free/nrw/commons/auth/AccountUtil.java b/app/src/main/java/fr/free/nrw/commons/auth/AccountUtil.java index 29f6fcf91..773eb5d63 100644 --- a/app/src/main/java/fr/free/nrw/commons/auth/AccountUtil.java +++ b/app/src/main/java/fr/free/nrw/commons/auth/AccountUtil.java @@ -55,7 +55,7 @@ public class AccountUtil { @NonNull private static CommonsApplication app() { - return CommonsApplication.app; + return CommonsApplication.getInstance(); } } diff --git a/app/src/main/java/fr/free/nrw/commons/auth/AuthenticatedActivity.java b/app/src/main/java/fr/free/nrw/commons/auth/AuthenticatedActivity.java index 6a99764af..7e195ed3e 100644 --- a/app/src/main/java/fr/free/nrw/commons/auth/AuthenticatedActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/auth/AuthenticatedActivity.java @@ -132,7 +132,7 @@ public abstract class AuthenticatedActivity extends NavigationBaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - app = (CommonsApplication)this.getApplicationContext(); + app = CommonsApplication.getInstance(); if(savedInstanceState != null) { authCookie = savedInstanceState.getString("authCookie"); } diff --git a/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java b/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java index bbadc757a..0bec4bac6 100644 --- a/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java @@ -40,7 +40,7 @@ public class LoginActivity extends AccountAuthenticatorActivity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - app = (CommonsApplication) getApplicationContext(); + app = CommonsApplication.getInstance(); setContentView(R.layout.activity_login); final LoginActivity that = this; @@ -199,7 +199,7 @@ public class LoginActivity extends AccountAuthenticatorActivity { } private void showUserToast( int resId ) { - Toast.makeText(getApplicationContext(), resId, Toast.LENGTH_LONG).show(); + Toast.makeText(this, resId, Toast.LENGTH_LONG).show(); } public void showSuccessToastAndDismissDialog() { diff --git a/app/src/main/java/fr/free/nrw/commons/auth/LoginTask.java b/app/src/main/java/fr/free/nrw/commons/auth/LoginTask.java index 8785bff71..d952e6535 100644 --- a/app/src/main/java/fr/free/nrw/commons/auth/LoginTask.java +++ b/app/src/main/java/fr/free/nrw/commons/auth/LoginTask.java @@ -26,7 +26,7 @@ class LoginTask extends AsyncTask { this.username = username; this.password = password; this.twoFactorCode = twoFactorCode; - app = (CommonsApplication) loginActivity.getApplicationContext(); + app = CommonsApplication.getInstance(); } @Override @@ -44,9 +44,9 @@ class LoginTask extends AsyncTask { protected String doInBackground(String... params) { try { if (twoFactorCode.isEmpty()) { - return app.getApi().login(username, password); + return app.getMWApi().login(username, password); } else { - return app.getApi().login(username, password, twoFactorCode); + return app.getMWApi().login(username, password, twoFactorCode); } } catch (IOException e) { // Do something better! diff --git a/app/src/main/java/fr/free/nrw/commons/auth/SignupActivity.java b/app/src/main/java/fr/free/nrw/commons/auth/SignupActivity.java index 5965c8928..530953c9f 100644 --- a/app/src/main/java/fr/free/nrw/commons/auth/SignupActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/auth/SignupActivity.java @@ -7,6 +7,7 @@ import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Toast; +import fr.free.nrw.commons.CommonsApplication; import fr.free.nrw.commons.theme.BaseActivity; import timber.log.Timber; @@ -39,10 +40,10 @@ public class SignupActivity extends BaseActivity { //Signup success, so clear cookies, notify user, and load LoginActivity again Timber.d("Overriding URL %s", url); - Toast toast = Toast.makeText(getApplicationContext(), "Account created!", Toast.LENGTH_LONG); + Toast toast = Toast.makeText(CommonsApplication.getInstance(), "Account created!", Toast.LENGTH_LONG); toast.show(); - Intent intent = new Intent(getApplicationContext(), LoginActivity.class); + Intent intent = new Intent(CommonsApplication.getInstance(), LoginActivity.class); startActivity(intent); return true; } else { diff --git a/app/src/main/java/fr/free/nrw/commons/auth/WikiAccountAuthenticator.java b/app/src/main/java/fr/free/nrw/commons/auth/WikiAccountAuthenticator.java index 7233b6be8..ebbd6c285 100644 --- a/app/src/main/java/fr/free/nrw/commons/auth/WikiAccountAuthenticator.java +++ b/app/src/main/java/fr/free/nrw/commons/auth/WikiAccountAuthenticator.java @@ -75,7 +75,7 @@ public class WikiAccountAuthenticator extends AbstractAccountAuthenticator { } private String getAuthCookie(String username, String password) throws IOException { - MWApi api = CommonsApplication.createMWApi(); + MWApi api = CommonsApplication.getInstance().getMWApi(); //TODO add 2fa support here String result = api.login(username, password); if(result.equals("PASS")) { diff --git a/app/src/main/java/fr/free/nrw/commons/category/MethodAUpdater.java b/app/src/main/java/fr/free/nrw/commons/category/MethodAUpdater.java index 33835119e..9300f640d 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/MethodAUpdater.java +++ b/app/src/main/java/fr/free/nrw/commons/category/MethodAUpdater.java @@ -79,7 +79,7 @@ public class MethodAUpdater extends AsyncTask> { protected ArrayList doInBackground(Void... voids) { //otherwise if user has typed something in that isn't in cache, search API for matching categories - MWApi api = CommonsApplication.createMWApi(); + MWApi api = CommonsApplication.getInstance().getMWApi(); ApiResult result; ArrayList categories = new ArrayList<>(); diff --git a/app/src/main/java/fr/free/nrw/commons/category/PrefixUpdater.java b/app/src/main/java/fr/free/nrw/commons/category/PrefixUpdater.java index 350c0b21f..05770081d 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/PrefixUpdater.java +++ b/app/src/main/java/fr/free/nrw/commons/category/PrefixUpdater.java @@ -95,7 +95,7 @@ public class PrefixUpdater extends AsyncTask> { //otherwise if user has typed something in that isn't in cache, search API for matching categories //URL: https://commons.wikimedia.org/w/api.php?action=query&list=allcategories&acprefix=filter&aclimit=25 - MWApi api = CommonsApplication.createMWApi(); + MWApi api = CommonsApplication.getInstance().getMWApi(); ApiResult result; ArrayList categories = new ArrayList<>(); try { diff --git a/app/src/main/java/fr/free/nrw/commons/category/TitleCategories.java b/app/src/main/java/fr/free/nrw/commons/category/TitleCategories.java index a372b353d..6ca46be0f 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/TitleCategories.java +++ b/app/src/main/java/fr/free/nrw/commons/category/TitleCategories.java @@ -34,7 +34,7 @@ public class TitleCategories extends AsyncTask> { @Override protected ArrayList doInBackground(Void... voids) { - MWApi api = CommonsApplication.createMWApi(); + MWApi api = CommonsApplication.getInstance().getMWApi(); ApiResult result; ArrayList items = new ArrayList<>(); diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsActivity.java b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsActivity.java index d9dd05b26..73b657329 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsActivity.java @@ -109,7 +109,7 @@ public class ContributionsActivity @Override protected void onAuthCookieAcquired(String authCookie) { // Do a sync everytime we get here! - ContentResolver.requestSync(((CommonsApplication) getApplicationContext()).getCurrentAccount(), ContributionsContentProvider.AUTHORITY, new Bundle()); + ContentResolver.requestSync(CommonsApplication.getInstance().getCurrentAccount(), ContributionsContentProvider.AUTHORITY, new Bundle()); Intent uploadServiceIntent = new Intent(this, UploadService.class); uploadServiceIntent.setAction(UploadService.ACTION_START_SERVICE); startService(uploadServiceIntent); @@ -219,7 +219,7 @@ public class ContributionsActivity @Override public Loader onCreateLoader(int i, Bundle bundle) { SharedPreferences sharedPref = - PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); + PreferenceManager.getDefaultSharedPreferences(this); int uploads = sharedPref.getInt(Prefs.UPLOADS_SHOWING, 100); return new CursorLoader(this, ContributionsContentProvider.BASE_URI, Contribution.Table.ALL_FIELDS, CONTRIBUTION_SELECTION, null, diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListAdapter.java b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListAdapter.java index 3a6aa72c3..182e9762a 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListAdapter.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListAdapter.java @@ -49,7 +49,7 @@ class ContributionsListAdapter extends CursorAdapter { if(views.url == null || !views.url.equals(actualUrl)) { if(actualUrl.startsWith("http")) { MediaWikiImageView mwImageView = views.imageView; - mwImageView.setMedia(contribution, ((CommonsApplication) activity.getApplicationContext()).getImageLoader()); + mwImageView.setMedia(contribution, CommonsApplication.getInstance().getImageLoader()); // FIXME: For transparent images } else { ImageLoader.getInstance().displayImage(actualUrl, views.imageView, contributionDisplayOptions, new SimpleImageLoadingListener() { @@ -66,7 +66,7 @@ class ContributionsListAdapter extends CursorAdapter { public void onLoadingFailed(String imageUri, View view, FailReason failReason) { super.onLoadingFailed(imageUri, view, failReason); MediaWikiImageView mwImageView = views.imageView; - mwImageView.setMedia(contribution, ((CommonsApplication) activity.getApplicationContext()).getImageLoader()); + mwImageView.setMedia(contribution, CommonsApplication.getInstance().getImageLoader()); } }); } diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java index 364071e22..be83b3327 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java @@ -159,8 +159,7 @@ public class ContributionsListFragment extends Fragment { menu.clear(); // See http://stackoverflow.com/a/8495697/17865 inflater.inflate(R.menu.fragment_contributions_list, menu); - CommonsApplication app = (CommonsApplication)getActivity().getApplicationContext(); - if (!app.deviceHasCamera()) { + if (!CommonsApplication.getInstance().deviceHasCamera()) { menu.findItem(R.id.menu_from_camera).setEnabled(false); } } diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsSyncAdapter.java b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsSyncAdapter.java index 81510e23b..52b966cfd 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsSyncAdapter.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsSyncAdapter.java @@ -61,7 +61,7 @@ public class ContributionsSyncAdapter extends AbstractThreadedSyncAdapter { public void onPerformSync(Account account, Bundle bundle, String s, ContentProviderClient contentProviderClient, SyncResult syncResult) { // This code is fraught with possibilities of race conditions, but lalalalala I can't hear you! String user = account.name; - MWApi api = CommonsApplication.createMWApi(); + MWApi api = CommonsApplication.getInstance().getMWApi(); SharedPreferences prefs = this.getContext().getSharedPreferences("prefs", Context.MODE_PRIVATE); String lastModified = prefs.getString("lastSyncTimestamp", ""); Date curTime = new Date(); diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsSyncService.java b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsSyncService.java index 3af92935c..946da6915 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsSyncService.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsSyncService.java @@ -15,7 +15,7 @@ public class ContributionsSyncService extends Service { super.onCreate(); synchronized (sSyncAdapterLock) { if (sSyncAdapter == null) { - sSyncAdapter = new ContributionsSyncAdapter(getApplicationContext(), true); + sSyncAdapter = new ContributionsSyncAdapter(this, true); } } } diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java index 6d46da801..b96845eb6 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java @@ -194,7 +194,7 @@ public class MediaDetailFragment extends Fragment { if(actualUrl.startsWith("http")) { Timber.d("Actual URL starts with http and is: %s", actualUrl); - ImageLoader loader = ((CommonsApplication)getActivity().getApplicationContext()).getImageLoader(); + ImageLoader loader = CommonsApplication.getInstance().getImageLoader(); MediaWikiImageView mwImage = (MediaWikiImageView)image; mwImage.setLoadingView(loadingProgress); //FIXME: Set this as an attribute mwImage.setMedia(media, loader); diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java index 9adbdb882..c7e06cefa 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java @@ -123,7 +123,7 @@ public class MediaDetailPagerFragment extends Fragment implements ViewPager.OnPa if(savedInstanceState != null) { editable = savedInstanceState.getBoolean("editable"); } - app = (CommonsApplication)getActivity().getApplicationContext(); + app = CommonsApplication.getInstance(); setHasOptionsMenu(true); } diff --git a/app/src/main/java/fr/free/nrw/commons/modifications/ModificationsSyncAdapter.java b/app/src/main/java/fr/free/nrw/commons/modifications/ModificationsSyncAdapter.java index fdc9e28a5..898c41f7d 100644 --- a/app/src/main/java/fr/free/nrw/commons/modifications/ModificationsSyncAdapter.java +++ b/app/src/main/java/fr/free/nrw/commons/modifications/ModificationsSyncAdapter.java @@ -61,7 +61,7 @@ public class ModificationsSyncAdapter extends AbstractThreadedSyncAdapter { return; } - MWApi api = CommonsApplication.createMWApi(); + MWApi api = CommonsApplication.getInstance().getMWApi(); api.setAuthCookie(authCookie); String editToken; diff --git a/app/src/main/java/fr/free/nrw/commons/modifications/ModificationsSyncService.java b/app/src/main/java/fr/free/nrw/commons/modifications/ModificationsSyncService.java index b664aaaa4..bf6878622 100644 --- a/app/src/main/java/fr/free/nrw/commons/modifications/ModificationsSyncService.java +++ b/app/src/main/java/fr/free/nrw/commons/modifications/ModificationsSyncService.java @@ -15,7 +15,7 @@ public class ModificationsSyncService extends Service { super.onCreate(); synchronized (sSyncAdapterLock) { if (sSyncAdapter == null) { - sSyncAdapter = new ModificationsSyncAdapter(getApplicationContext(), true); + sSyncAdapter = new ModificationsSyncAdapter(this, true); } } } diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java index 2446800d3..181643e79 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java @@ -25,6 +25,7 @@ import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; import fr.free.nrw.commons.R; +import fr.free.nrw.commons.CommonsApplication; import fr.free.nrw.commons.location.LatLng; import fr.free.nrw.commons.location.LocationServiceManager; import fr.free.nrw.commons.theme.NavigationBaseActivity; @@ -184,7 +185,7 @@ public class NearbyActivity extends NavigationBaseActivity { @Override protected List doInBackground(Void... params) { return NearbyController - .loadAttractionsFromLocation(curLatLang, getApplicationContext() + .loadAttractionsFromLocation(curLatLang, CommonsApplication.getInstance() ); } diff --git a/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java b/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java index 84c5e1e13..bdac4a0f5 100644 --- a/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java @@ -11,6 +11,7 @@ import android.preference.Preference; import android.preference.PreferenceFragment; import android.preference.PreferenceManager; +import fr.free.nrw.commons.CommonsApplication; import fr.free.nrw.commons.R; import fr.free.nrw.commons.Utils; @@ -46,7 +47,7 @@ public class SettingsFragment extends PreferenceFragment { final EditTextPreference uploadLimit = (EditTextPreference) findPreference("uploads"); final SharedPreferences sharedPref = PreferenceManager - .getDefaultSharedPreferences(getActivity().getApplicationContext()); + .getDefaultSharedPreferences(CommonsApplication.getInstance()); int uploads = sharedPref.getInt(Prefs.UPLOADS_SHOWING, 100); uploadLimit.setText(uploads + ""); uploadLimit.setSummary(uploads + ""); diff --git a/app/src/main/java/fr/free/nrw/commons/upload/ExistingFileAsync.java b/app/src/main/java/fr/free/nrw/commons/upload/ExistingFileAsync.java index 14988c60c..27b9ed8d8 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/ExistingFileAsync.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/ExistingFileAsync.java @@ -38,7 +38,7 @@ public class ExistingFileAsync extends AsyncTask { @Override protected Boolean doInBackground(Void... voids) { - MWApi api = CommonsApplication.createMWApi(); + MWApi api = CommonsApplication.getInstance().getMWApi(); ApiResult result; // https://commons.wikimedia.org/w/api.php?action=query&list=allimages&format=xml&aisha1=801957214aba50cb63bb6eb1b0effa50188900ba diff --git a/app/src/main/java/fr/free/nrw/commons/upload/MultipleShareActivity.java b/app/src/main/java/fr/free/nrw/commons/upload/MultipleShareActivity.java index 8c5e6b6d2..12b38a6ab 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/MultipleShareActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/MultipleShareActivity.java @@ -132,7 +132,11 @@ public class MultipleShareActivity dialog.setProgress(uploadCount); if(uploadCount == photosList.size()) { dialog.dismiss(); - Toast startingToast = Toast.makeText(getApplicationContext(), R.string.uploading_started, Toast.LENGTH_LONG); + Toast startingToast = Toast.makeText( + CommonsApplication.getInstance(), + R.string.uploading_started, + Toast.LENGTH_LONG + ); startingToast.show(); } } @@ -202,9 +206,9 @@ public class MultipleShareActivity uploadController = new UploadController(this); setContentView(R.layout.activity_multiple_uploads); + app = CommonsApplication.getInstance(); ButterKnife.bind(this); initDrawer(); - app = (CommonsApplication)this.getApplicationContext(); if(savedInstanceState != null) { photosList = savedInstanceState.getParcelableArrayList("uploadsList"); @@ -241,7 +245,7 @@ public class MultipleShareActivity @Override protected void onAuthCookieAcquired(String authCookie) { - app.getApi().setAuthCookie(authCookie); + app.getMWApi().setAuthCookie(authCookie); Intent intent = getIntent(); if(intent.getAction().equals(Intent.ACTION_SEND_MULTIPLE)) { diff --git a/app/src/main/java/fr/free/nrw/commons/upload/MwVolleyApi.java b/app/src/main/java/fr/free/nrw/commons/upload/MwVolleyApi.java index 6544b4fff..367309593 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/MwVolleyApi.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/MwVolleyApi.java @@ -101,7 +101,7 @@ public class MwVolleyApi { private static RequestQueue getQueue(Context context) { if (REQUEST_QUEUE == null) { - REQUEST_QUEUE = Volley.newRequestQueue(context.getApplicationContext()); + REQUEST_QUEUE = Volley.newRequestQueue(context); } return REQUEST_QUEUE; } diff --git a/app/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java b/app/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java index 08ddbe821..2353dd465 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java @@ -106,12 +106,16 @@ public class ShareActivity getFileMetadata(false); } - Toast startingToast = Toast.makeText(getApplicationContext(), R.string.uploading_started, Toast.LENGTH_LONG); + Toast startingToast = Toast.makeText( + CommonsApplication.getInstance(), + R.string.uploading_started, + Toast.LENGTH_LONG + ); startingToast.show(); if (!cacheFound) { //Has to be called after apiCall.request() - app.cacheData.cacheCategory(); + app.getCacheData().cacheCategory(); Timber.d("Cache the categories found"); } @@ -189,7 +193,7 @@ public class ShareActivity @Override protected void onAuthCookieAcquired(String authCookie) { - app.getApi().setAuthCookie(authCookie); + app.getMWApi().setAuthCookie(authCookie); shareView = (SingleUploadFragment) getSupportFragmentManager().findFragmentByTag("shareView"); categorizationFragment = (CategorizationFragment) getSupportFragmentManager().findFragmentByTag("categorization"); @@ -217,7 +221,7 @@ public class ShareActivity setContentView(R.layout.activity_share); ButterKnife.bind(this); initDrawer(); - app = (CommonsApplication)this.getApplicationContext(); + app = CommonsApplication.getInstance(); backgroundImageView = (ImageView)findViewById(R.id.backgroundImage); //Receive intent from ContributionController.java when user selects picture to upload @@ -398,12 +402,12 @@ public class ShareActivity if (imageObj.imageCoordsExists) { double decLongitude = imageObj.getDecLongitude(); double decLatitude = imageObj.getDecLatitude(); - app.cacheData.setQtPoint(decLongitude, decLatitude); + app.getCacheData().setQtPoint(decLongitude, decLatitude); } MwVolleyApi apiCall = new MwVolleyApi(this); - List displayCatList = app.cacheData.findCategory(); + List displayCatList = app.getCacheData().findCategory(); boolean catListEmpty = displayCatList.isEmpty(); // If no categories found in cache, call MediaWiki API to match image coords with nearby Commons categories diff --git a/app/src/main/java/fr/free/nrw/commons/upload/UploadController.java b/app/src/main/java/fr/free/nrw/commons/upload/UploadController.java index 2bdee55f5..4266384c1 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/UploadController.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/UploadController.java @@ -36,7 +36,7 @@ public class UploadController { public UploadController(Activity activity) { this.activity = activity; - app = (CommonsApplication)activity.getApplicationContext(); + app = CommonsApplication.getInstance(); } private boolean isUploadServiceConnected; @@ -55,7 +55,7 @@ public class UploadController { }; public void prepareService() { - Intent uploadServiceIntent = new Intent(activity.getApplicationContext(), UploadService.class); + Intent uploadServiceIntent = new Intent(activity, UploadService.class); uploadServiceIntent.setAction(UploadService.ACTION_START_SERVICE); activity.startService(uploadServiceIntent); activity.bindService(uploadServiceIntent, uploadServiceConnection, Context.BIND_AUTO_CREATE); diff --git a/app/src/main/java/fr/free/nrw/commons/upload/UploadService.java b/app/src/main/java/fr/free/nrw/commons/upload/UploadService.java index 523b6a479..853952fae 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/UploadService.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/UploadService.java @@ -115,7 +115,7 @@ public class UploadService extends HandlerService { super.onCreate(); notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); - app = (CommonsApplication) this.getApplicationContext(); + app = CommonsApplication.getInstance(); contributionsProviderClient = this.getContentResolver().acquireContentProviderClient(ContributionsContentProvider.AUTHORITY); } @@ -176,7 +176,7 @@ public class UploadService extends HandlerService { } private void uploadContribution(Contribution contribution) { - MWApi api = app.getApi(); + MWApi api = app.getMWApi(); ApiResult result; InputStream file = null; @@ -201,7 +201,7 @@ public class UploadService extends HandlerService { .setContentText(getResources().getQuantityString(R.plurals.uploads_pending_notification_indicator, toUpload, toUpload)) .setOngoing(true) .setProgress(100, 0, true) - .setContentIntent(PendingIntent.getActivity(getApplicationContext(), 0, new Intent(this, ContributionsActivity.class), 0)) + .setContentIntent(PendingIntent.getActivity(this, 0, new Intent(this, ContributionsActivity.class), 0)) .setTicker(getString(R.string.upload_progress_notification_title_in_progress, contribution.getDisplayTitle())); this.startForeground(NOTIFICATION_UPLOAD_IN_PROGRESS, curProgressNotification.build()); @@ -282,7 +282,7 @@ public class UploadService extends HandlerService { toUpload--; if(toUpload == 0) { // Sync modifications right after all uplaods are processed - ContentResolver.requestSync(((CommonsApplication) getApplicationContext()).getCurrentAccount(), ModificationsContentProvider.AUTHORITY, new Bundle()); + ContentResolver.requestSync((CommonsApplication.getInstance()).getCurrentAccount(), ModificationsContentProvider.AUTHORITY, new Bundle()); stopForeground(true); } } @@ -304,7 +304,7 @@ public class UploadService extends HandlerService { } private String findUniqueFilename(String fileName) throws IOException { - MWApi api = app.getApi(); + MWApi api = app.getMWApi(); String sequenceFileName; for ( int sequenceNumber = 1; true; sequenceNumber++ ) { if (sequenceNumber == 1) {