diff -r 000000000000 -r 14443efede32 app/src/main/java/com/geekorum/ttrss/Application.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/src/main/java/com/geekorum/ttrss/Application.java Sat Nov 24 17:54:27 2018 -0800
@@ -0,0 +1,105 @@
+/**
+ * Geekttrss is a RSS feed reader application on the Android Platform.
+ *
+ * Copyright (C) 2017-2018 by Frederic-Charles Barthelery.
+ *
+ * This file is part of Geekttrss.
+ *
+ * Geekttrss is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Geekttrss is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Geekttrss. If not, see .
+ */
+package com.geekorum.ttrss;
+
+import android.app.Activity;
+import android.app.Service;
+import android.content.SharedPreferences;
+import android.preference.PreferenceManager;
+import androidx.appcompat.app.AppCompatDelegate;
+import com.geekorum.ttrss.di.ApplicationComponent;
+import com.geekorum.ttrss.di.DaggerApplicationComponent;
+import com.squareup.picasso.Picasso;
+import dagger.android.AndroidInjector;
+import dagger.android.DispatchingAndroidInjector;
+import dagger.android.HasActivityInjector;
+import dagger.android.HasServiceInjector;
+import timber.log.Timber;
+
+import javax.inject.Inject;
+
+import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_AUTO;
+
+/**
+ * Initialize global component for the TTRSS application.
+ */
+public class Application extends android.app.Application implements HasActivityInjector, HasServiceInjector {
+ @Inject
+ ApplicationComponent applicationComponent;
+
+ @Inject
+ DispatchingAndroidInjector dispatchinActivityInjector;
+ @Inject
+ DispatchingAndroidInjector dispatchingServiceInjector;
+
+ @Inject
+ Timber.Tree timberTree;
+
+ @Inject
+ Picasso picasso;
+
+ private boolean needToInject = true;
+
+ @Override
+ public void onCreate() {
+ injectIfNecessary();
+ super.onCreate();
+ Timber.plant(timberTree);
+ SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
+ String nighModeStr = sharedPreferences.getString(SettingsActivity.KEY_THEME, Integer.toString(MODE_NIGHT_AUTO));
+ int nighMode = Integer.valueOf(nighModeStr);
+ AppCompatDelegate.setDefaultNightMode(nighMode);
+ }
+
+ public void injectIfNecessary() {
+ if (needToInject) {
+ synchronized (this) {
+ if (needToInject) {
+ DaggerApplicationComponent.builder()
+ .bindApplication(this)
+ .build().inject(this);
+ setupPicasso();
+ needToInject = false;
+ }
+ }
+ }
+ }
+
+ public ApplicationComponent getApplicationComponent() {
+ // Content providers can be created before Application.onCreate() is called
+ injectIfNecessary();
+ return applicationComponent;
+ }
+
+ @Override
+ public AndroidInjector activityInjector() {
+ return dispatchinActivityInjector;
+ }
+
+ private void setupPicasso() {
+ Picasso.setSingletonInstance(picasso);
+ }
+
+ @Override
+ public AndroidInjector serviceInjector() {
+ return dispatchingServiceInjector;
+ }
+}