package org.bookdash.android; import android.content.Context; import com.google.firebase.FirebaseApp; import com.google.firebase.FirebaseOptions; import com.google.firebase.database.FirebaseDatabase; import com.google.firebase.messaging.FirebaseMessaging; import com.google.firebase.storage.FirebaseStorage; import org.bookdash.android.data.analytics.MockAnalytics; import org.bookdash.android.data.book.BookService; import org.bookdash.android.data.book.DownloadService; import org.bookdash.android.data.book.DownloadServiceImpl; import org.bookdash.android.data.book.FakeBookServiceApiImpl; import org.bookdash.android.data.settings.FakeSettingsApiImpl; import org.bookdash.android.data.settings.SettingsRepository; import org.bookdash.android.data.settings.SettingsRepositoryImpl; import org.bookdash.android.data.tracking.Analytics; import org.bookdash.android.data.tutorial.TutorialsRepositories; import org.bookdash.android.data.tutorial.TutorialsRepository; /** * @author rebeccafranks * @since 15/11/05. */ public class Injection { public static final String STORAGE_PREFIX = "gs://book-dash-qa.appspot.com/"; private static DownloadServiceImpl downloadService; public static void init(Context context) { if (!isInitialized()) { FirebaseApp firebaseApp = FirebaseApp .initializeApp(context, FirebaseOptions.fromResource(context), "Book Dash"); FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance(firebaseApp); firebaseDatabase.setPersistenceEnabled(true); downloadService = new DownloadServiceImpl(FirebaseStorage.getInstance(firebaseApp)); } } private static boolean isInitialized() { return downloadService != null; } public static TutorialsRepository provideTutorialRepo(Context context) { return TutorialsRepositories.getInstance(context); } public static BookService provideBookService() { return new FakeBookServiceApiImpl(); } public static SettingsRepository provideSettingsRepo(Context context) { return new SettingsRepositoryImpl(new FakeSettingsApiImpl(), FirebaseMessaging.getInstance()); } public static DownloadService provideDownloadService() { return downloadService; } public static Analytics provideAnalytics() { return new MockAnalytics(); } }