From 4a9b0b42bc034216e6da7257aca7c54d9dc99e56 Mon Sep 17 00:00:00 2001 From: Floens Date: Tue, 2 Jan 2018 20:16:31 +0100 Subject: [PATCH] replace dagger with feather feather is more lightweight, and does not use an annotation processor. this speeds up the build. it does use reflection, but that is no issue for us. our graph is really small, and reflection is not slow on newer android versions. replaces all calls to the original getGraph() with inject and related methods. also update the licenses. --- Clover/app/build.gradle | 10 +- Clover/app/src/main/assets/html/license.html | 2 +- Clover/app/src/main/assets/html/licenses.html | 68 ++++++++++++++ .../src/main/java/org/floens/chan/Chan.java | 24 +++-- .../org/floens/chan/core/di/AppModule.java | 94 +------------------ .../org/floens/chan/core/di/NetModule.java | 11 +-- .../chan/core/manager/WatchManager.java | 10 +- .../core/presenter/ImageViewerPresenter.java | 6 +- .../core/receiver/WatchUpdateReceiver.java | 6 +- .../floens/chan/core/saver/ImageSaveTask.java | 4 +- .../org/floens/chan/core/site/SiteBase.java | 16 ++-- .../core/site/common/ChanReaderRequest.java | 8 +- .../chan/core/site/loader/ChanLoader.java | 4 +- .../chan/core/site/sites/chan8/Chan8.java | 4 +- .../chan/core/update/UpdateManager.java | 4 +- .../chan/ui/activity/StartActivity.java | 4 +- .../floens/chan/ui/adapter/DrawerAdapter.java | 4 +- .../floens/chan/ui/adapter/PostsFilter.java | 4 +- .../org/floens/chan/ui/cell/PostCell.java | 4 +- .../ui/controller/BoardSetupController.java | 4 +- .../chan/ui/controller/BrowseController.java | 4 +- .../DeveloperSettingsController.java | 4 +- .../chan/ui/controller/DrawerController.java | 4 +- .../chan/ui/controller/FiltersController.java | 4 +- .../chan/ui/controller/HistoryController.java | 4 +- .../ui/controller/ImageViewerController.java | 7 +- .../ui/controller/MainSettingsController.java | 5 +- .../ui/controller/SiteSetupController.java | 5 +- .../ui/controller/SitesSetupController.java | 5 +- .../ui/controller/ViewThreadController.java | 4 +- .../chan/ui/helper/ImagePickDelegate.java | 4 +- .../floens/chan/ui/layout/FilterLayout.java | 4 +- .../floens/chan/ui/layout/ThreadLayout.java | 7 +- .../floens/chan/ui/service/WatchNotifier.java | 6 +- .../floens/chan/ui/view/MultiImageView.java | 4 +- .../floens/chan/ui/view/ThumbnailView.java | 4 +- 36 files changed, 162 insertions(+), 204 deletions(-) diff --git a/Clover/app/build.gradle b/Clover/app/build.gradle index f395c03b..cf837499 100644 --- a/Clover/app/build.gradle +++ b/Clover/app/build.gradle @@ -140,13 +140,5 @@ dependencies { implementation 'org.nibor.autolink:autolink:0.6.0' implementation 'com.google.code.gson:gson:2.8.1' implementation 'me.xdrop:fuzzywuzzy:1.1.9' - - // Yes that's dagger 1, "deprecated". - // There's little wrong with it, except that it might be slow at runtime. - // We don't have a huge graph. The major downside of the newer dagger version - // is that it uses annotation processing. Annotation processors block incremental - // compiling, so our builds become way slower, and I rather have faster builds. - // Move to gradle 2 when incremental compiling supports annotation processors. - compile 'com.squareup.dagger:dagger:1.2.5' - annotationProcessor 'com.squareup.dagger:dagger-compiler:1.2.5' + implementation 'org.codejargon.feather:feather:1.0' } diff --git a/Clover/app/src/main/assets/html/license.html b/Clover/app/src/main/assets/html/license.html index 8ac74962..46dd2731 100644 --- a/Clover/app/src/main/assets/html/license.html +++ b/Clover/app/src/main/assets/html/license.html @@ -22,7 +22,7 @@ GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 - Copyright (C) 2007 Free Software Foundation, Inc. + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. diff --git a/Clover/app/src/main/assets/html/licenses.html b/Clover/app/src/main/assets/html/licenses.html index a0ae3211..0c3bc6de 100644 --- a/Clover/app/src/main/assets/html/licenses.html +++ b/Clover/app/src/main/assets/html/licenses.html @@ -194,6 +194,7 @@ The GIFLIB distribution is Copyright (c) 1997 Eric S. Raymond
+

autolink-java

https://github.com/robinst/autolink-java
@@ -221,6 +222,73 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 SOFTWARE.
         
     
+ +

Google Gson

+ https://github.com/google/gson +
+        
+Copyright 2008 Google Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+        
+    

+ +

xdrop fuzzywuzzy

+ https://github.com/xdrop/fuzzywuzzy +
+        
+fuzzywuzzy
+Java fuzzy string matching implementation of the well known Python's fuzzywuzzy algorithm. Fuzzy search for Java
+
+Copyright (C) 2016 xdrop
+
+This program 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.
+
+This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
+        
+    
+
+ +

zsoltherpai feather

+ https://github.com/zsoltherpai/feather +
+        
+Copyright {2015} {Zsolt Herpai}
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+        
+    
+
+ diff --git a/Clover/app/src/main/java/org/floens/chan/Chan.java b/Clover/app/src/main/java/org/floens/chan/Chan.java index d6fc8342..8b4d4994 100644 --- a/Clover/app/src/main/java/org/floens/chan/Chan.java +++ b/Clover/app/src/main/java/org/floens/chan/Chan.java @@ -25,6 +25,7 @@ import android.os.Build; import android.os.Bundle; import android.os.StrictMode; +import org.codejargon.feather.Feather; import org.floens.chan.core.database.DatabaseManager; import org.floens.chan.core.di.AppModule; import org.floens.chan.core.di.NetModule; @@ -38,7 +39,6 @@ import java.util.Locale; import javax.inject.Inject; -import dagger.ObjectGraph; import de.greenrobot.event.EventBus; public class Chan extends Application implements UserAgentProvider, Application.ActivityLifecycleCallbacks { @@ -50,13 +50,12 @@ public class Chan extends Application implements UserAgentProvider, Application. private String userAgent; private int activityForegroundCounter = 0; - protected ObjectGraph graph; - @Inject SiteManager siteManager; @Inject DatabaseManager databaseManager; + private Feather feather; public Chan() { instance = this; @@ -66,12 +65,13 @@ public class Chan extends Application implements UserAgentProvider, Application. return instance; } - public static ObjectGraph getGraph() { - return instance.graph; + public static Feather injector() { + return instance.feather; } public static T inject(T instance) { - return Chan.instance.graph.inject(instance); + Chan.instance.feather.injectFields(instance); + return instance; } @Override @@ -86,9 +86,7 @@ public class Chan extends Application implements UserAgentProvider, Application. userAgent = createUserAgent(); - graph = ObjectGraph.create(new AppModule(this, this), new NetModule()); - - graph.inject(this); + initializeGraph(); siteManager.initialize(); @@ -117,6 +115,14 @@ public class Chan extends Application implements UserAgentProvider, Application. } } + private void initializeGraph() { + feather = Feather.with( + new AppModule(this, this), + new NetModule() + ); + feather.injectFields(this); + } + @Override public String getUserAgent() { return userAgent; diff --git a/Clover/app/src/main/java/org/floens/chan/core/di/AppModule.java b/Clover/app/src/main/java/org/floens/chan/core/di/AppModule.java index 5ecc180b..c553e90d 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/di/AppModule.java +++ b/Clover/app/src/main/java/org/floens/chan/core/di/AppModule.java @@ -5,103 +5,11 @@ import android.content.Context; import com.android.volley.RequestQueue; import com.android.volley.toolbox.ImageLoader; -import org.floens.chan.ChanApplication; -import org.floens.chan.core.site.loader.ChanLoader; -import org.floens.chan.core.cache.FileCache; -import org.floens.chan.core.database.DatabaseManager; -import org.floens.chan.core.database.LoadableProvider; -import org.floens.chan.core.manager.BoardManager; -import org.floens.chan.core.manager.FilterEngine; -import org.floens.chan.core.manager.ReplyManager; -import org.floens.chan.core.manager.WatchManager; +import org.codejargon.feather.Provides; import org.floens.chan.core.net.BitmapLruImageCache; -import org.floens.chan.core.presenter.BoardSetupPresenter; -import org.floens.chan.core.presenter.ImageViewerPresenter; -import org.floens.chan.core.presenter.ReplyPresenter; -import org.floens.chan.core.presenter.SitesSetupPresenter; -import org.floens.chan.core.presenter.ThreadPresenter; -import org.floens.chan.core.receiver.WatchUpdateReceiver; -import org.floens.chan.core.saver.ImageSaveTask; -import org.floens.chan.core.site.SiteManager; -import org.floens.chan.core.site.common.ChanReaderRequest; -import org.floens.chan.core.site.http.HttpCallManager; -import org.floens.chan.core.update.UpdateManager; -import org.floens.chan.ui.activity.BoardActivity; -import org.floens.chan.ui.adapter.DrawerAdapter; -import org.floens.chan.ui.adapter.PostsFilter; -import org.floens.chan.ui.controller.BoardSetupController; -import org.floens.chan.ui.controller.BrowseController; -import org.floens.chan.ui.controller.DeveloperSettingsController; -import org.floens.chan.ui.controller.DrawerController; -import org.floens.chan.ui.controller.FiltersController; -import org.floens.chan.ui.controller.HistoryController; -import org.floens.chan.ui.controller.ImageViewerController; -import org.floens.chan.ui.controller.MainSettingsController; -import org.floens.chan.ui.controller.SiteSetupController; -import org.floens.chan.ui.controller.SitesSetupController; -import org.floens.chan.ui.controller.ViewThreadController; -import org.floens.chan.ui.helper.ImagePickDelegate; -import org.floens.chan.ui.layout.FilterLayout; -import org.floens.chan.ui.layout.ReplyLayout; -import org.floens.chan.ui.layout.ThreadLayout; -import org.floens.chan.ui.service.WatchNotifier; -import org.floens.chan.ui.view.MultiImageView; import javax.inject.Singleton; -import dagger.Module; -import dagger.Provides; - -@Module( - injects = { -// Context.class, // ApplicationContext - - BoardManager.class, - DatabaseManager.class, - ReplyManager.class, - ImageLoader.class, - FileCache.class, - HttpCallManager.class, - LoadableProvider.class, - - ChanApplication.class, - MainSettingsController.class, - ReplyPresenter.class, - ChanReaderRequest.class, - ThreadLayout.class, - DeveloperSettingsController.class, - BoardActivity.class, - ThreadPresenter.class, - FilterEngine.class, - BrowseController.class, - FilterLayout.class, - HistoryController.class, - DrawerController.class, - DrawerAdapter.class, - WatchNotifier.class, - WatchUpdateReceiver.class, - ImagePickDelegate.class, - FiltersController.class, - PostsFilter.class, - ChanLoader.class, - ImageViewerController.class, - ImageViewerPresenter.class, - MultiImageView.class, - ImageSaveTask.class, - ViewThreadController.class, - WatchManager.PinWatcher.class, - UpdateManager.class, - SiteManager.class, - SitesSetupPresenter.class, - BoardSetupPresenter.class, - SiteSetupController.class, - SitesSetupController.class, - BoardSetupController.class, - ReplyLayout.class, - }, - complete = false, - includes = NetModule.class -) public class AppModule { private Context applicationContext; private UserAgentProvider userAgentProvider; diff --git a/Clover/app/src/main/java/org/floens/chan/core/di/NetModule.java b/Clover/app/src/main/java/org/floens/chan/core/di/NetModule.java index 8ac1e4cf..b0f47812 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/di/NetModule.java +++ b/Clover/app/src/main/java/org/floens/chan/core/di/NetModule.java @@ -5,6 +5,7 @@ import android.content.Context; import com.android.volley.RequestQueue; import com.android.volley.toolbox.Volley; +import org.codejargon.feather.Provides; import org.floens.chan.core.cache.FileCache; import org.floens.chan.core.net.ProxiedHurlStack; @@ -12,16 +13,6 @@ import java.io.File; import javax.inject.Singleton; -import dagger.Module; -import dagger.Provides; - -@Module( - injects = { - RequestQueue.class, - FileCache.class - }, - complete = false -) public class NetModule { private static final int VOLLEY_CACHE_SIZE = 10 * 1024 * 1024; private static final long FILE_CACHE_DISK_SIZE = 50 * 1024 * 1024; diff --git a/Clover/app/src/main/java/org/floens/chan/core/manager/WatchManager.java b/Clover/app/src/main/java/org/floens/chan/core/manager/WatchManager.java index 31675916..d906772c 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/manager/WatchManager.java +++ b/Clover/app/src/main/java/org/floens/chan/core/manager/WatchManager.java @@ -27,17 +27,17 @@ import android.os.Message; import android.os.PowerManager; import org.floens.chan.Chan; -import org.floens.chan.core.site.loader.ChanLoader; import org.floens.chan.core.database.DatabaseManager; import org.floens.chan.core.database.DatabasePinManager; import org.floens.chan.core.exception.ChanLoaderException; import org.floens.chan.core.model.ChanThread; -import org.floens.chan.core.model.orm.Loadable; -import org.floens.chan.core.model.orm.Pin; import org.floens.chan.core.model.Post; import org.floens.chan.core.model.PostImage; +import org.floens.chan.core.model.orm.Loadable; +import org.floens.chan.core.model.orm.Pin; import org.floens.chan.core.pool.ChanLoaderFactory; import org.floens.chan.core.settings.ChanSettings; +import org.floens.chan.core.site.loader.ChanLoader; import org.floens.chan.ui.helper.PostHelper; import org.floens.chan.ui.service.WatchNotifier; import org.floens.chan.utils.Logger; @@ -57,7 +57,7 @@ import javax.inject.Singleton; import de.greenrobot.event.EventBus; -import static org.floens.chan.Chan.getGraph; +import static org.floens.chan.Chan.inject; import static org.floens.chan.utils.AndroidUtils.getAppContext; /** @@ -665,7 +665,7 @@ public class WatchManager { public PinWatcher(Pin pin) { this.pin = pin; - getGraph().inject(this); + inject(this); Logger.d(TAG, "PinWatcher: created for " + pin); chanLoader = chanLoaderFactory.obtain(pin.loadable, this); diff --git a/Clover/app/src/main/java/org/floens/chan/core/presenter/ImageViewerPresenter.java b/Clover/app/src/main/java/org/floens/chan/core/presenter/ImageViewerPresenter.java index 5e4a2914..e3907227 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/presenter/ImageViewerPresenter.java +++ b/Clover/app/src/main/java/org/floens/chan/core/presenter/ImageViewerPresenter.java @@ -21,8 +21,8 @@ import android.net.ConnectivityManager; import android.support.v4.view.ViewPager; import org.floens.chan.core.cache.FileCache; -import org.floens.chan.core.model.orm.Loadable; import org.floens.chan.core.model.PostImage; +import org.floens.chan.core.model.orm.Loadable; import org.floens.chan.core.settings.ChanSettings; import org.floens.chan.ui.view.MultiImageView; @@ -32,7 +32,7 @@ import java.util.List; import javax.inject.Inject; -import static org.floens.chan.Chan.getGraph; +import static org.floens.chan.Chan.inject; import static org.floens.chan.utils.AndroidUtils.isConnected; public class ImageViewerPresenter implements MultiImageView.Callback, ViewPager.OnPageChangeListener { @@ -56,7 +56,7 @@ public class ImageViewerPresenter implements MultiImageView.Callback, ViewPager. public ImageViewerPresenter(Callback callback) { this.callback = callback; - getGraph().inject(this); + inject(this); } public void showImages(List images, int position, Loadable loadable) { diff --git a/Clover/app/src/main/java/org/floens/chan/core/receiver/WatchUpdateReceiver.java b/Clover/app/src/main/java/org/floens/chan/core/receiver/WatchUpdateReceiver.java index ba5316d7..28c6c6c5 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/receiver/WatchUpdateReceiver.java +++ b/Clover/app/src/main/java/org/floens/chan/core/receiver/WatchUpdateReceiver.java @@ -21,13 +21,11 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; -import org.floens.chan.Chan; import org.floens.chan.core.manager.WatchManager; -import org.floens.chan.utils.Logger; import javax.inject.Inject; -import static org.floens.chan.Chan.getGraph; +import static org.floens.chan.Chan.inject; public class WatchUpdateReceiver extends BroadcastReceiver { private static final String TAG = "WatchUpdateReceiver"; @@ -36,7 +34,7 @@ public class WatchUpdateReceiver extends BroadcastReceiver { WatchManager watchManager; public WatchUpdateReceiver() { - getGraph().inject(this); + inject(this); } @Override diff --git a/Clover/app/src/main/java/org/floens/chan/core/saver/ImageSaveTask.java b/Clover/app/src/main/java/org/floens/chan/core/saver/ImageSaveTask.java index e1b0c5ab..30a52de5 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/saver/ImageSaveTask.java +++ b/Clover/app/src/main/java/org/floens/chan/core/saver/ImageSaveTask.java @@ -34,7 +34,7 @@ import java.io.IOException; import javax.inject.Inject; -import static org.floens.chan.Chan.getGraph; +import static org.floens.chan.Chan.inject; import static org.floens.chan.utils.AndroidUtils.dp; import static org.floens.chan.utils.AndroidUtils.getAppContext; @@ -56,7 +56,7 @@ public class ImageSaveTask implements Runnable, FileCache.DownloadedCallback { private boolean success = false; public ImageSaveTask(PostImage postImage) { - getGraph().inject(this); + inject(this); this.postImage = postImage; } diff --git a/Clover/app/src/main/java/org/floens/chan/core/site/SiteBase.java b/Clover/app/src/main/java/org/floens/chan/core/site/SiteBase.java index d88d566e..c9ab1618 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/site/SiteBase.java +++ b/Clover/app/src/main/java/org/floens/chan/core/site/SiteBase.java @@ -20,6 +20,7 @@ package org.floens.chan.core.site; import com.android.volley.RequestQueue; +import org.codejargon.feather.Feather; import org.floens.chan.core.database.LoadableProvider; import org.floens.chan.core.manager.BoardManager; import org.floens.chan.core.model.json.site.SiteConfig; @@ -29,9 +30,7 @@ import org.floens.chan.core.site.http.HttpCallManager; import java.util.Collections; -import dagger.ObjectGraph; - -import static org.floens.chan.Chan.getGraph; +import static org.floens.chan.Chan.injector; public abstract class SiteBase implements Site { protected int id; @@ -52,12 +51,11 @@ public abstract class SiteBase implements Site { @Override public void postInitialize() { - ObjectGraph graph = getGraph(); - - httpCallManager = graph.get(HttpCallManager.class); - requestQueue = graph.get(RequestQueue.class); - boardManager = graph.get(BoardManager.class); - loadableProvider = graph.get(LoadableProvider.class); + Feather injector = injector(); + httpCallManager = injector.instance(HttpCallManager.class); + requestQueue = injector.instance(RequestQueue.class); + boardManager = injector.instance(BoardManager.class); + loadableProvider = injector.instance(LoadableProvider.class); if (boardsType() == BoardsType.DYNAMIC) { boards(boards -> boardManager.createAll(boards.boards)); diff --git a/Clover/app/src/main/java/org/floens/chan/core/site/common/ChanReaderRequest.java b/Clover/app/src/main/java/org/floens/chan/core/site/common/ChanReaderRequest.java index 9fe2582a..8968a417 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/site/common/ChanReaderRequest.java +++ b/Clover/app/src/main/java/org/floens/chan/core/site/common/ChanReaderRequest.java @@ -19,8 +19,6 @@ package org.floens.chan.core.site.common; import android.util.JsonReader; -import org.floens.chan.core.site.loader.ChanLoaderRequestParams; -import org.floens.chan.core.site.loader.ChanLoaderResponse; import org.floens.chan.core.database.DatabaseManager; import org.floens.chan.core.database.DatabaseSavedReplyManager; import org.floens.chan.core.manager.FilterEngine; @@ -28,6 +26,8 @@ import org.floens.chan.core.model.Post; import org.floens.chan.core.model.orm.Filter; import org.floens.chan.core.model.orm.Loadable; import org.floens.chan.core.net.JsonReaderRequest; +import org.floens.chan.core.site.loader.ChanLoaderRequestParams; +import org.floens.chan.core.site.loader.ChanLoaderResponse; import org.floens.chan.utils.Time; import java.util.ArrayList; @@ -44,7 +44,7 @@ import javax.inject.Inject; import okhttp3.HttpUrl; -import static org.floens.chan.Chan.getGraph; +import static org.floens.chan.Chan.inject; /** * Process a typical imageboard json response.
@@ -79,7 +79,7 @@ public class ChanReaderRequest extends JsonReaderRequest { public ChanReaderRequest(ChanLoaderRequestParams request) { super(getChanUrl(request.loadable).toString(), request.listener, request.errorListener); - getGraph().inject(this); + inject(this); // Copy the loadable and cached list. The cached array may changed/cleared by other threads. loadable = request.loadable.copy(); diff --git a/Clover/app/src/main/java/org/floens/chan/core/site/loader/ChanLoader.java b/Clover/app/src/main/java/org/floens/chan/core/site/loader/ChanLoader.java index 0b8ea957..e3b5c3ad 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/site/loader/ChanLoader.java +++ b/Clover/app/src/main/java/org/floens/chan/core/site/loader/ChanLoader.java @@ -43,7 +43,7 @@ import java.util.concurrent.TimeUnit; import javax.inject.Inject; -import static org.floens.chan.Chan.getGraph; +import static org.floens.chan.Chan.inject; /** * A ChanLoader is the loader for Loadables. @@ -78,7 +78,7 @@ public class ChanLoader implements Response.ErrorListener, Response.Listener() { @Override diff --git a/Clover/app/src/main/java/org/floens/chan/core/update/UpdateManager.java b/Clover/app/src/main/java/org/floens/chan/core/update/UpdateManager.java index 31c53ac0..fe1562c3 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/update/UpdateManager.java +++ b/Clover/app/src/main/java/org/floens/chan/core/update/UpdateManager.java @@ -43,7 +43,7 @@ import javax.inject.Inject; import okhttp3.HttpUrl; -import static org.floens.chan.Chan.getGraph; +import static org.floens.chan.Chan.inject; /** * Calls the update API and downloads and requests installs of APK files. @@ -66,7 +66,7 @@ public class UpdateManager { private UpdateCallback callback; public UpdateManager(UpdateCallback callback) { - getGraph().inject(this); + inject(this); this.callback = callback; } diff --git a/Clover/app/src/main/java/org/floens/chan/ui/activity/StartActivity.java b/Clover/app/src/main/java/org/floens/chan/ui/activity/StartActivity.java index 816a14df..d8cf8e44 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/activity/StartActivity.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/activity/StartActivity.java @@ -69,7 +69,7 @@ import java.util.List; import javax.inject.Inject; -import static org.floens.chan.Chan.getGraph; +import static org.floens.chan.Chan.inject; public class StartActivity extends AppCompatActivity implements NfcAdapter.CreateNdefMessageCallback { private static final String TAG = "StartActivity"; @@ -105,7 +105,7 @@ public class StartActivity extends AppCompatActivity implements NfcAdapter.Creat @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - getGraph().inject(this); + inject(this); ThemeHelper.getInstance().setupContext(this); diff --git a/Clover/app/src/main/java/org/floens/chan/ui/adapter/DrawerAdapter.java b/Clover/app/src/main/java/org/floens/chan/ui/adapter/DrawerAdapter.java index fa050a73..f112e4da 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/adapter/DrawerAdapter.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/adapter/DrawerAdapter.java @@ -42,7 +42,7 @@ import java.util.List; import javax.inject.Inject; -import static org.floens.chan.Chan.getGraph; +import static org.floens.chan.Chan.inject; import static org.floens.chan.ui.theme.ThemeHelper.theme; import static org.floens.chan.utils.AndroidUtils.ROBOTO_MEDIUM; import static org.floens.chan.utils.AndroidUtils.dp; @@ -78,7 +78,7 @@ public class DrawerAdapter extends RecyclerView.Adapter private Pin highlighted; public DrawerAdapter(Callback callback) { - getGraph().inject(this); + inject(this); this.callback = callback; setHasStableIds(true); } diff --git a/Clover/app/src/main/java/org/floens/chan/ui/adapter/PostsFilter.java b/Clover/app/src/main/java/org/floens/chan/ui/adapter/PostsFilter.java index 0e69ee98..48808a60 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/adapter/PostsFilter.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/adapter/PostsFilter.java @@ -31,7 +31,7 @@ import java.util.Locale; import javax.inject.Inject; -import static org.floens.chan.Chan.getGraph; +import static org.floens.chan.Chan.inject; public class PostsFilter { public static final Comparator IMAGE_COMPARATOR = new Comparator() { @@ -71,7 +71,7 @@ public class PostsFilter { public PostsFilter(Order order, String query) { this.order = order; this.query = query; - getGraph().inject(this); + inject(this); } /** diff --git a/Clover/app/src/main/java/org/floens/chan/ui/cell/PostCell.java b/Clover/app/src/main/java/org/floens/chan/ui/cell/PostCell.java index c0920c53..53b80e23 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/cell/PostCell.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/cell/PostCell.java @@ -81,7 +81,7 @@ import java.util.List; import okhttp3.HttpUrl; import static android.text.TextUtils.isEmpty; -import static org.floens.chan.Chan.getGraph; +import static org.floens.chan.Chan.injector; import static org.floens.chan.utils.AndroidUtils.ROBOTO_CONDENSED_REGULAR; import static org.floens.chan.utils.AndroidUtils.dp; import static org.floens.chan.utils.AndroidUtils.getString; @@ -834,7 +834,7 @@ public class PostCell extends LinearLayout implements PostCellInterface { } private void request() { - request = getGraph().get(ImageLoader.class).get(url.toString(), this); + request = injector().instance(ImageLoader.class).get(url.toString(), this); } private void cancel() { diff --git a/Clover/app/src/main/java/org/floens/chan/ui/controller/BoardSetupController.java b/Clover/app/src/main/java/org/floens/chan/ui/controller/BoardSetupController.java index ceb68d4b..3e8548cf 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/controller/BoardSetupController.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/controller/BoardSetupController.java @@ -50,7 +50,7 @@ import java.util.List; import javax.inject.Inject; -import static org.floens.chan.Chan.getGraph; +import static org.floens.chan.Chan.inject; import static org.floens.chan.ui.theme.ThemeHelper.theme; import static org.floens.chan.utils.AndroidUtils.fixSnackbarText; import static org.floens.chan.utils.AndroidUtils.getAttrColor; @@ -99,7 +99,7 @@ public class BoardSetupController extends Controller implements View.OnClickList public void onCreate() { super.onCreate(); - getGraph().inject(this); + inject(this); // Inflate view = inflateRes(R.layout.controller_board_setup); diff --git a/Clover/app/src/main/java/org/floens/chan/ui/controller/BrowseController.java b/Clover/app/src/main/java/org/floens/chan/ui/controller/BrowseController.java index 5f20d341..7c2c10e4 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/controller/BrowseController.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/controller/BrowseController.java @@ -48,7 +48,7 @@ import java.util.List; import javax.inject.Inject; -import static org.floens.chan.Chan.getGraph; +import static org.floens.chan.Chan.inject; import static org.floens.chan.utils.AndroidUtils.getString; public class BrowseController extends ThreadController implements ToolbarMenuItem.ToolbarMenuItemCallback, ThreadLayout.ThreadLayoutCallback, BrowsePresenter.Callback { @@ -78,7 +78,7 @@ public class BrowseController extends ThreadController implements ToolbarMenuIte @Override public void onCreate() { super.onCreate(); - getGraph().inject(this); + inject(this); // Initialization postViewMode = ChanSettings.boardViewMode.get(); diff --git a/Clover/app/src/main/java/org/floens/chan/ui/controller/DeveloperSettingsController.java b/Clover/app/src/main/java/org/floens/chan/ui/controller/DeveloperSettingsController.java index f558b1e1..a9d374dd 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/controller/DeveloperSettingsController.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/controller/DeveloperSettingsController.java @@ -30,7 +30,7 @@ import org.floens.chan.core.database.DatabaseManager; import javax.inject.Inject; -import static org.floens.chan.Chan.getGraph; +import static org.floens.chan.Chan.inject; import static org.floens.chan.utils.AndroidUtils.dp; import static org.floens.chan.utils.AndroidUtils.getAttrColor; @@ -48,7 +48,7 @@ public class DeveloperSettingsController extends Controller { public void onCreate() { super.onCreate(); - getGraph().inject(this); + inject(this); navigationItem.setTitle(R.string.settings_developer); diff --git a/Clover/app/src/main/java/org/floens/chan/ui/controller/DrawerController.java b/Clover/app/src/main/java/org/floens/chan/ui/controller/DrawerController.java index 8888e352..206fb27a 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/controller/DrawerController.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/controller/DrawerController.java @@ -49,7 +49,7 @@ import javax.inject.Inject; import de.greenrobot.event.EventBus; -import static org.floens.chan.Chan.getGraph; +import static org.floens.chan.Chan.inject; import static org.floens.chan.ui.theme.ThemeHelper.theme; import static org.floens.chan.utils.AndroidUtils.ROBOTO_MEDIUM; import static org.floens.chan.utils.AndroidUtils.dp; @@ -73,7 +73,7 @@ public class DrawerController extends Controller implements DrawerAdapter.Callba @Override public void onCreate() { super.onCreate(); - getGraph().inject(this); + inject(this); EventBus.getDefault().register(this); diff --git a/Clover/app/src/main/java/org/floens/chan/ui/controller/FiltersController.java b/Clover/app/src/main/java/org/floens/chan/ui/controller/FiltersController.java index 4be55fd2..42a24a17 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/controller/FiltersController.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/controller/FiltersController.java @@ -50,7 +50,7 @@ import javax.inject.Inject; import de.greenrobot.event.EventBus; -import static org.floens.chan.Chan.getGraph; +import static org.floens.chan.Chan.inject; import static org.floens.chan.ui.theme.ThemeHelper.theme; import static org.floens.chan.utils.AndroidUtils.getAttrColor; import static org.floens.chan.utils.AndroidUtils.getString; @@ -106,7 +106,7 @@ public class FiltersController extends Controller implements ToolbarMenuItem.Too @Override public void onCreate() { super.onCreate(); - getGraph().inject(this); + inject(this); navigationItem.setTitle(R.string.filters_screen); navigationItem.menu = new ToolbarMenu(context); diff --git a/Clover/app/src/main/java/org/floens/chan/ui/controller/HistoryController.java b/Clover/app/src/main/java/org/floens/chan/ui/controller/HistoryController.java index 6c978baf..80f8e9bb 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/controller/HistoryController.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/controller/HistoryController.java @@ -53,7 +53,7 @@ import java.util.Locale; import javax.inject.Inject; -import static org.floens.chan.Chan.getGraph; +import static org.floens.chan.Chan.inject; import static org.floens.chan.ui.theme.ThemeHelper.theme; import static org.floens.chan.utils.AndroidUtils.dp; @@ -82,7 +82,7 @@ public class HistoryController extends Controller implements CompoundButton.OnCh @Override public void onCreate() { super.onCreate(); - getGraph().inject(this); + inject(this); databaseHistoryManager = databaseManager.getDatabaseHistoryManager(); databaseSavedReplyManager = databaseManager.getDatabaseSavedReplyManager(); diff --git a/Clover/app/src/main/java/org/floens/chan/ui/controller/ImageViewerController.java b/Clover/app/src/main/java/org/floens/chan/ui/controller/ImageViewerController.java index bf9753c1..add69599 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/controller/ImageViewerController.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/controller/ImageViewerController.java @@ -46,13 +46,13 @@ import com.android.volley.toolbox.ImageLoader; import com.davemorrissey.labs.subscaleview.ImageViewState; import org.floens.chan.R; -import org.floens.chan.core.site.ImageSearch; import org.floens.chan.controller.Controller; import org.floens.chan.core.model.PostImage; import org.floens.chan.core.presenter.ImageViewerPresenter; import org.floens.chan.core.saver.ImageSaveTask; import org.floens.chan.core.saver.ImageSaver; import org.floens.chan.core.settings.ChanSettings; +import org.floens.chan.core.site.ImageSearch; import org.floens.chan.ui.adapter.ImageViewerAdapter; import org.floens.chan.ui.toolbar.Toolbar; import org.floens.chan.ui.toolbar.ToolbarMenu; @@ -75,7 +75,7 @@ import javax.inject.Inject; import okhttp3.HttpUrl; -import static org.floens.chan.Chan.getGraph; +import static org.floens.chan.Chan.inject; import static org.floens.chan.utils.AndroidUtils.dp; import static org.floens.chan.utils.AndroidUtils.getString; @@ -111,7 +111,7 @@ public class ImageViewerController extends Controller implements ImageViewerPres public ImageViewerController(Context context, Toolbar toolbar) { super(context); - getGraph().inject(this); + inject(this); this.toolbar = toolbar; @@ -547,6 +547,7 @@ public class ImageViewerController extends Controller implements ImageViewerPres /** * Send thumbnail image of movie posts because none of the image search providers support movies (such as webm) directly + * * @param postImage the post image * @return url of an image to be searched */ diff --git a/Clover/app/src/main/java/org/floens/chan/ui/controller/MainSettingsController.java b/Clover/app/src/main/java/org/floens/chan/ui/controller/MainSettingsController.java index fc7417a8..b3829ce2 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/controller/MainSettingsController.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/controller/MainSettingsController.java @@ -25,7 +25,6 @@ import android.text.TextUtils; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; -import android.widget.PopupWindow; import android.widget.Toast; import org.floens.chan.R; @@ -55,7 +54,7 @@ import javax.inject.Inject; import de.greenrobot.event.EventBus; -import static org.floens.chan.Chan.getGraph; +import static org.floens.chan.Chan.inject; import static org.floens.chan.ui.theme.ThemeHelper.theme; import static org.floens.chan.utils.AndroidUtils.getString; @@ -92,8 +91,8 @@ public class MainSettingsController extends SettingsController implements Toolba @Override public void onCreate() { super.onCreate(); + inject(this); - getGraph().inject(this); EventBus.getDefault().register(this); navigationItem.setTitle(R.string.settings_screen); diff --git a/Clover/app/src/main/java/org/floens/chan/ui/controller/SiteSetupController.java b/Clover/app/src/main/java/org/floens/chan/ui/controller/SiteSetupController.java index b6b39b9c..41100fc1 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/controller/SiteSetupController.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/controller/SiteSetupController.java @@ -28,7 +28,7 @@ import org.floens.chan.ui.settings.SettingsGroup; import javax.inject.Inject; -import static org.floens.chan.Chan.getGraph; +import static org.floens.chan.Chan.inject; public class SiteSetupController extends SettingsController implements SiteSetupPresenter.Callback { @Inject @@ -45,8 +45,7 @@ public class SiteSetupController extends SettingsController implements SiteSetup @Override public void onCreate() { super.onCreate(); - - getGraph().inject(this); + inject(this); // Navigation navigationItem.setTitle(R.string.settings_screen); diff --git a/Clover/app/src/main/java/org/floens/chan/ui/controller/SitesSetupController.java b/Clover/app/src/main/java/org/floens/chan/ui/controller/SitesSetupController.java index 639206e8..a6be7a3a 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/controller/SitesSetupController.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/controller/SitesSetupController.java @@ -47,7 +47,7 @@ import java.util.List; import javax.inject.Inject; -import static org.floens.chan.Chan.getGraph; +import static org.floens.chan.Chan.inject; import static org.floens.chan.ui.theme.ThemeHelper.theme; import static org.floens.chan.utils.AndroidUtils.setRoundItemBackground; @@ -72,8 +72,7 @@ public class SitesSetupController extends StyledToolbarNavigationController impl @Override public void onCreate() { super.onCreate(); - - getGraph().inject(this); + inject(this); // Inflate view = inflateRes(R.layout.controller_sites_setup); diff --git a/Clover/app/src/main/java/org/floens/chan/ui/controller/ViewThreadController.java b/Clover/app/src/main/java/org/floens/chan/ui/controller/ViewThreadController.java index d01a0beb..9e308c55 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/controller/ViewThreadController.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/controller/ViewThreadController.java @@ -42,7 +42,7 @@ import java.util.List; import javax.inject.Inject; -import static org.floens.chan.Chan.getGraph; +import static org.floens.chan.Chan.inject; import static org.floens.chan.utils.AndroidUtils.dp; import static org.floens.chan.utils.AndroidUtils.getAttrColor; @@ -75,7 +75,7 @@ public class ViewThreadController extends ThreadController implements ThreadLayo @Override public void onCreate() { super.onCreate(); - getGraph().inject(this); + inject(this); threadLayout.setPostViewMode(ChanSettings.PostViewMode.LIST); diff --git a/Clover/app/src/main/java/org/floens/chan/ui/helper/ImagePickDelegate.java b/Clover/app/src/main/java/org/floens/chan/ui/helper/ImagePickDelegate.java index 1cac1c03..55a7e30d 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/helper/ImagePickDelegate.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/helper/ImagePickDelegate.java @@ -37,7 +37,7 @@ import java.io.OutputStream; import javax.inject.Inject; -import static org.floens.chan.Chan.getGraph; +import static org.floens.chan.Chan.inject; import static org.floens.chan.utils.AndroidUtils.runOnUiThread; public class ImagePickDelegate implements Runnable { @@ -60,7 +60,7 @@ public class ImagePickDelegate implements Runnable { public ImagePickDelegate(Activity activity) { this.activity = activity; - getGraph().inject(this); + inject(this); } public boolean pick(ImagePickCallback callback) { diff --git a/Clover/app/src/main/java/org/floens/chan/ui/layout/FilterLayout.java b/Clover/app/src/main/java/org/floens/chan/ui/layout/FilterLayout.java index 2bcfbd39..8ee3dbce 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/layout/FilterLayout.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/layout/FilterLayout.java @@ -59,7 +59,7 @@ import java.util.List; import javax.inject.Inject; -import static org.floens.chan.Chan.getGraph; +import static org.floens.chan.Chan.inject; import static org.floens.chan.ui.theme.ThemeHelper.theme; import static org.floens.chan.utils.AndroidUtils.dp; import static org.floens.chan.utils.AndroidUtils.getAttrColor; @@ -102,7 +102,7 @@ public class FilterLayout extends LinearLayout implements View.OnClickListener { @Override protected void onFinishInflate() { super.onFinishInflate(); - getGraph().inject(this); + inject(this); typeText = (TextView) findViewById(R.id.type); boardsSelector = (TextView) findViewById(R.id.boards); diff --git a/Clover/app/src/main/java/org/floens/chan/ui/layout/ThreadLayout.java b/Clover/app/src/main/java/org/floens/chan/ui/layout/ThreadLayout.java index 62ee52fc..26fc68ff 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/layout/ThreadLayout.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/layout/ThreadLayout.java @@ -45,10 +45,10 @@ import org.floens.chan.controller.Controller; import org.floens.chan.core.database.DatabaseManager; import org.floens.chan.core.exception.ChanLoaderException; import org.floens.chan.core.model.ChanThread; -import org.floens.chan.core.model.orm.Loadable; import org.floens.chan.core.model.Post; import org.floens.chan.core.model.PostImage; import org.floens.chan.core.model.PostLinkable; +import org.floens.chan.core.model.orm.Loadable; import org.floens.chan.core.model.orm.ThreadHide; import org.floens.chan.core.presenter.ThreadPresenter; import org.floens.chan.core.settings.ChanSettings; @@ -64,7 +64,7 @@ import java.util.List; import javax.inject.Inject; -import static org.floens.chan.Chan.getGraph; +import static org.floens.chan.Chan.inject; import static org.floens.chan.ui.theme.ThemeHelper.theme; import static org.floens.chan.utils.AndroidUtils.fixSnackbarText; import static org.floens.chan.utils.AndroidUtils.getString; @@ -116,8 +116,7 @@ public class ThreadLayout extends CoordinatorLayout implements public ThreadLayout(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); - - getGraph().inject(this); + inject(this); } public void create(ThreadLayoutCallback callback) { diff --git a/Clover/app/src/main/java/org/floens/chan/ui/service/WatchNotifier.java b/Clover/app/src/main/java/org/floens/chan/ui/service/WatchNotifier.java index 6ac08d71..15abb63b 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/service/WatchNotifier.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/service/WatchNotifier.java @@ -30,8 +30,8 @@ import android.text.TextUtils; import org.floens.chan.Chan; import org.floens.chan.R; import org.floens.chan.core.manager.WatchManager; -import org.floens.chan.core.model.orm.Pin; import org.floens.chan.core.model.Post; +import org.floens.chan.core.model.orm.Pin; import org.floens.chan.core.settings.ChanSettings; import org.floens.chan.ui.activity.BoardActivity; @@ -43,7 +43,7 @@ import java.util.regex.Pattern; import javax.inject.Inject; -import static org.floens.chan.Chan.getGraph; +import static org.floens.chan.Chan.inject; public class WatchNotifier extends Service { private static final String TAG = "WatchNotifier"; @@ -66,7 +66,7 @@ public class WatchNotifier extends Service { @Override public void onCreate() { super.onCreate(); - getGraph().inject(this); + inject(this); nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); diff --git a/Clover/app/src/main/java/org/floens/chan/ui/view/MultiImageView.java b/Clover/app/src/main/java/org/floens/chan/ui/view/MultiImageView.java index 7192ca77..00222763 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/view/MultiImageView.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/view/MultiImageView.java @@ -51,7 +51,7 @@ import javax.inject.Inject; import pl.droidsonroids.gif.GifDrawable; import pl.droidsonroids.gif.GifImageView; -import static org.floens.chan.Chan.getGraph; +import static org.floens.chan.Chan.inject; public class MultiImageView extends FrameLayout implements View.OnClickListener { public enum Mode { @@ -98,7 +98,7 @@ public class MultiImageView extends FrameLayout implements View.OnClickListener } private void init() { - getGraph().inject(this); + inject(this); setOnClickListener(this); diff --git a/Clover/app/src/main/java/org/floens/chan/ui/view/ThumbnailView.java b/Clover/app/src/main/java/org/floens/chan/ui/view/ThumbnailView.java index 74560b60..f00e4f39 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/view/ThumbnailView.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/view/ThumbnailView.java @@ -42,7 +42,7 @@ import com.android.volley.toolbox.ImageLoader; import org.floens.chan.R; -import static org.floens.chan.Chan.getGraph; +import static org.floens.chan.Chan.injector; import static org.floens.chan.utils.AndroidUtils.getString; import static org.floens.chan.utils.AndroidUtils.sp; @@ -105,7 +105,7 @@ public class ThumbnailView extends View implements ImageLoader.ImageListener { } if (!TextUtils.isEmpty(url)) { - container = getGraph().get(ImageLoader.class).get(url, this, width, height); + container = injector().instance(ImageLoader.class).get(url, this, width, height); } }