From 0ebcbd9434974ca30e454e258e0dfa5ae658b87f Mon Sep 17 00:00:00 2001 From: Hemanth S Date: Tue, 21 Jul 2020 01:21:15 +0530 Subject: [PATCH] Added Koin --- .../java/code/name/monkey/retromusic/App.kt | 3 +- .../code/name/monkey/retromusic/Constants.kt | 1 + .../activities/albums/AlbumDetailsActivity.kt | 2 +- .../albums/AlbumDetailsViewModel.kt | 2 +- .../artists/ArtistDetailActivity.kt | 2 +- .../artists/ArtistDetailsViewModel.kt | 2 +- .../retromusic/dialogs/AddToPlaylistDialog.kt | 32 +-------- .../glide/artistimage/ArtistImageLoader.kt | 2 +- .../service => network}/LastFMService.kt | 6 +- .../retromusic/network/RetrofitClient.kt | 71 +++++++++++++++++++ .../{rest => network}/model/LastFmAlbum.java | 2 +- .../{rest => network}/model/LastFmArtist.java | 2 +- .../{rest => network}/model/LastFmTrack.java | 2 +- .../AlbumCoverStylePreferenceDialog.kt | 6 +- .../preferences/BlacklistPreferenceDialog.kt | 18 ++--- .../preferences/LibraryPreference.kt | 8 +-- .../NowPlayingScreenPreferenceDialog.kt | 8 +-- .../retromusic/providers/ProviderModule.kt | 2 +- .../retromusic/providers/RepositoryImpl.kt | 15 ++-- .../providers/interfaces/Repository.kt | 4 +- .../monkey/retromusic/rest/LastFmClient.kt | 69 ------------------ 21 files changed, 108 insertions(+), 151 deletions(-) rename app/src/main/java/code/name/monkey/retromusic/{rest/service => network}/LastFMService.kt (89%) create mode 100644 app/src/main/java/code/name/monkey/retromusic/network/RetrofitClient.kt rename app/src/main/java/code/name/monkey/retromusic/{rest => network}/model/LastFmAlbum.java (98%) rename app/src/main/java/code/name/monkey/retromusic/{rest => network}/model/LastFmArtist.java (98%) rename app/src/main/java/code/name/monkey/retromusic/{rest => network}/model/LastFmTrack.java (98%) delete mode 100644 app/src/main/java/code/name/monkey/retromusic/rest/LastFmClient.kt diff --git a/app/src/main/java/code/name/monkey/retromusic/App.kt b/app/src/main/java/code/name/monkey/retromusic/App.kt index f9e2e7cf..e6fe75c6 100644 --- a/app/src/main/java/code/name/monkey/retromusic/App.kt +++ b/app/src/main/java/code/name/monkey/retromusic/App.kt @@ -20,6 +20,7 @@ import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.util.VersionUtils import code.name.monkey.retromusic.Constants.PRO_VERSION_PRODUCT_ID import code.name.monkey.retromusic.appshortcuts.DynamicShortcutManager +import code.name.monkey.retromusic.network.networkModule import code.name.monkey.retromusic.providers.provideModules import com.anjlab.android.iab.v3.BillingProcessor import com.anjlab.android.iab.v3.TransactionDetails @@ -36,7 +37,7 @@ class App : MultiDexApplication() { startKoin { androidContext(this@App) - modules(listOf(mainModule, provideModules)) + modules(listOf(mainModule, provideModules, networkModule)) } // default theme if (!ThemeStore.isConfigured(this, 3)) { diff --git a/app/src/main/java/code/name/monkey/retromusic/Constants.kt b/app/src/main/java/code/name/monkey/retromusic/Constants.kt index 8388eb2e..b5399322 100644 --- a/app/src/main/java/code/name/monkey/retromusic/Constants.kt +++ b/app/src/main/java/code/name/monkey/retromusic/Constants.kt @@ -31,6 +31,7 @@ object Constants { const val APP_TWITTER_LINK = "https://twitter.com/retromusicapp" const val FAQ_LINK = "https://github.com/h4h13/RetroMusicPlayer/blob/master/FAQ.md" const val PINTEREST = "https://in.pinterest.com/retromusicapp/" + const val BASE_URL = "https://ws.audioscrobbler.com/2.0/" const val IS_MUSIC = MediaStore.Audio.AudioColumns.IS_MUSIC + "=1" + " AND " + MediaStore.Audio.AudioColumns.TITLE + " != ''" diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/albums/AlbumDetailsActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/albums/AlbumDetailsActivity.kt index 5ce2a2ba..7ff9bff1 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/albums/AlbumDetailsActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/albums/AlbumDetailsActivity.kt @@ -36,7 +36,7 @@ import code.name.monkey.retromusic.helper.SortOrder.AlbumSongSortOrder import code.name.monkey.retromusic.interfaces.CabHolder import code.name.monkey.retromusic.model.Album import code.name.monkey.retromusic.model.Artist -import code.name.monkey.retromusic.rest.model.LastFmAlbum +import code.name.monkey.retromusic.network.model.LastFmAlbum import code.name.monkey.retromusic.util.* import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import com.afollestad.materialcab.MaterialCab diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/albums/AlbumDetailsViewModel.kt b/app/src/main/java/code/name/monkey/retromusic/activities/albums/AlbumDetailsViewModel.kt index 113fa907..38bde635 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/albums/AlbumDetailsViewModel.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/albums/AlbumDetailsViewModel.kt @@ -8,7 +8,7 @@ import code.name.monkey.retromusic.interfaces.MusicServiceEventListener import code.name.monkey.retromusic.model.Album import code.name.monkey.retromusic.model.Artist import code.name.monkey.retromusic.providers.RepositoryImpl -import code.name.monkey.retromusic.rest.model.LastFmAlbum +import code.name.monkey.retromusic.network.model.LastFmAlbum import kotlinx.coroutines.Deferred import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.async diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/artists/ArtistDetailActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/artists/ArtistDetailActivity.kt index e254f4e3..8848be8e 100755 --- a/app/src/main/java/code/name/monkey/retromusic/activities/artists/ArtistDetailActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/artists/ArtistDetailActivity.kt @@ -30,7 +30,7 @@ import code.name.monkey.retromusic.glide.RetroMusicColoredTarget import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.interfaces.CabHolder import code.name.monkey.retromusic.model.Artist -import code.name.monkey.retromusic.rest.model.LastFmArtist +import code.name.monkey.retromusic.network.model.LastFmArtist import code.name.monkey.retromusic.util.* import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import com.afollestad.materialcab.MaterialCab diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/artists/ArtistDetailsViewModel.kt b/app/src/main/java/code/name/monkey/retromusic/activities/artists/ArtistDetailsViewModel.kt index e236bdf8..9802c594 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/artists/ArtistDetailsViewModel.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/artists/ArtistDetailsViewModel.kt @@ -7,7 +7,7 @@ import androidx.lifecycle.viewModelScope import code.name.monkey.retromusic.interfaces.MusicServiceEventListener import code.name.monkey.retromusic.model.Artist import code.name.monkey.retromusic.providers.RepositoryImpl -import code.name.monkey.retromusic.rest.model.LastFmArtist +import code.name.monkey.retromusic.network.model.LastFmArtist import kotlinx.coroutines.Deferred import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.async diff --git a/app/src/main/java/code/name/monkey/retromusic/dialogs/AddToPlaylistDialog.kt b/app/src/main/java/code/name/monkey/retromusic/dialogs/AddToPlaylistDialog.kt index c23f299c..c73a8ca4 100644 --- a/app/src/main/java/code/name/monkey/retromusic/dialogs/AddToPlaylistDialog.kt +++ b/app/src/main/java/code/name/monkey/retromusic/dialogs/AddToPlaylistDialog.kt @@ -15,12 +15,7 @@ package code.name.monkey.retromusic.dialogs import android.app.Dialog -import android.graphics.Color import android.os.Bundle -import android.view.View -import android.view.ViewGroup -import android.widget.ArrayAdapter -import android.widget.TextView import androidx.fragment.app.DialogFragment import code.name.monkey.retromusic.EXTRA_SONG import code.name.monkey.retromusic.R @@ -43,33 +38,8 @@ class AddToPlaylistDialog : DialogFragment() { for (p in playlists) { playlistNames.add(p.name) } - val adapter: ArrayAdapter = object : ArrayAdapter( - requireContext(), - R.layout.dialog_list_item, - playlistNames - ) { - override fun getView(position: Int, convertView: View?, parent: ViewGroup): View { - val view = super.getView(position, convertView, parent) - view.findViewById(android.R.id.text1).setTextColor(Color.RED) - return view - } - } + return materialDialog(R.string.add_playlist_title) - /*.setAdapter(adapter) { _, which -> - val songs = extraNotNull>(EXTRA_SONG).value - if (which == 0) { - CreatePlaylistDialog.create(songs) - .show(requireActivity().supportFragmentManager, "ADD_TO_PLAYLIST") - } else { - PlaylistsUtil.addToPlaylist( - requireContext(), - songs, - playlists[which - 1].id, - true - ) - } - dismiss() - }*/ .setItems(playlistNames.toTypedArray()) { _, which -> val songs = extraNotNull>(EXTRA_SONG).value if (which == 0) { diff --git a/app/src/main/java/code/name/monkey/retromusic/glide/artistimage/ArtistImageLoader.kt b/app/src/main/java/code/name/monkey/retromusic/glide/artistimage/ArtistImageLoader.kt index 63647f6c..a6f70942 100644 --- a/app/src/main/java/code/name/monkey/retromusic/glide/artistimage/ArtistImageLoader.kt +++ b/app/src/main/java/code/name/monkey/retromusic/glide/artistimage/ArtistImageLoader.kt @@ -15,8 +15,8 @@ package code.name.monkey.retromusic.glide.artistimage import android.content.Context -import code.name.monkey.retromusic.deezer.Data import code.name.monkey.retromusic.deezer.DeezerApiService +import code.name.monkey.retromusic.deezer.Data import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.PreferenceUtil import com.bumptech.glide.Priority diff --git a/app/src/main/java/code/name/monkey/retromusic/rest/service/LastFMService.kt b/app/src/main/java/code/name/monkey/retromusic/network/LastFMService.kt similarity index 89% rename from app/src/main/java/code/name/monkey/retromusic/rest/service/LastFMService.kt rename to app/src/main/java/code/name/monkey/retromusic/network/LastFMService.kt index c9ee7d10..cbb04035 100644 --- a/app/src/main/java/code/name/monkey/retromusic/rest/service/LastFMService.kt +++ b/app/src/main/java/code/name/monkey/retromusic/network/LastFMService.kt @@ -12,10 +12,10 @@ * See the GNU General Public License for more details. */ -package code.name.monkey.retromusic.rest.service +package code.name.monkey.retromusic.network -import code.name.monkey.retromusic.rest.model.LastFmAlbum -import code.name.monkey.retromusic.rest.model.LastFmArtist +import code.name.monkey.retromusic.network.model.LastFmAlbum +import code.name.monkey.retromusic.network.model.LastFmArtist import retrofit2.http.GET import retrofit2.http.Header import retrofit2.http.Query diff --git a/app/src/main/java/code/name/monkey/retromusic/network/RetrofitClient.kt b/app/src/main/java/code/name/monkey/retromusic/network/RetrofitClient.kt new file mode 100644 index 00000000..afaaeb67 --- /dev/null +++ b/app/src/main/java/code/name/monkey/retromusic/network/RetrofitClient.kt @@ -0,0 +1,71 @@ +package code.name.monkey.retromusic.network + +import code.name.monkey.retromusic.App +import code.name.monkey.retromusic.Constants.BASE_URL +import com.google.gson.Gson +import okhttp3.Cache +import okhttp3.ConnectionPool +import okhttp3.Interceptor +import okhttp3.OkHttpClient +import org.koin.dsl.module +import retrofit2.Retrofit +import retrofit2.converter.gson.GsonConverterFactory +import java.io.File +import java.util.concurrent.TimeUnit + +private const val TIMEOUT: Long = 700 + +val networkModule = module { + factory { + provideHttpClient(get(), get()) + } + factory { + provideCacheControlInterceptor() + } + factory { + provideDefaultCache() + } + factory { + provideLastFmService(get()) + } + single { + providerRetrofit(get()) + } +} + +fun provideLastFmService(retrofit: Retrofit): LastFMService = + retrofit.create(LastFMService::class.java) + +fun providerRetrofit(okHttpClient: OkHttpClient.Builder): Retrofit = Retrofit.Builder() + .baseUrl(BASE_URL) + .callFactory(okHttpClient.build()) + .addConverterFactory(GsonConverterFactory.create(Gson())) + .build() + +fun provideHttpClient( + cache: Cache, + interceptor: Interceptor +): OkHttpClient.Builder = OkHttpClient.Builder() + .connectionPool(ConnectionPool(0, 1, TimeUnit.NANOSECONDS)) + .retryOnConnectionFailure(true) + .connectTimeout(TIMEOUT, TimeUnit.MINUTES) + .writeTimeout(TIMEOUT, TimeUnit.MINUTES) + .readTimeout(TIMEOUT, TimeUnit.MINUTES) + .cache(cache) + .addInterceptor(interceptor) + + +fun provideCacheControlInterceptor(): Interceptor = Interceptor { chain: Interceptor.Chain -> + val modifiedRequest = chain.request().newBuilder() + .addHeader("Cache-Control", "max-age=31536000, max-stale=31536000") + .build() + chain.proceed(modifiedRequest) +} + +fun provideDefaultCache(): Cache? { + val cacheDir = File(App.getContext().cacheDir.absolutePath, "/okhttp-lastfm/") + if (cacheDir.mkdirs() || cacheDir.isDirectory) { + return Cache(cacheDir, 1024 * 1024 * 10) + } + return null +} diff --git a/app/src/main/java/code/name/monkey/retromusic/rest/model/LastFmAlbum.java b/app/src/main/java/code/name/monkey/retromusic/network/model/LastFmAlbum.java similarity index 98% rename from app/src/main/java/code/name/monkey/retromusic/rest/model/LastFmAlbum.java rename to app/src/main/java/code/name/monkey/retromusic/network/model/LastFmAlbum.java index 7c3ca35e..779a10b7 100644 --- a/app/src/main/java/code/name/monkey/retromusic/rest/model/LastFmAlbum.java +++ b/app/src/main/java/code/name/monkey/retromusic/network/model/LastFmAlbum.java @@ -12,7 +12,7 @@ * See the GNU General Public License for more details. */ -package code.name.monkey.retromusic.rest.model; +package code.name.monkey.retromusic.network.model; import com.google.gson.annotations.Expose; import com.google.gson.annotations.SerializedName; diff --git a/app/src/main/java/code/name/monkey/retromusic/rest/model/LastFmArtist.java b/app/src/main/java/code/name/monkey/retromusic/network/model/LastFmArtist.java similarity index 98% rename from app/src/main/java/code/name/monkey/retromusic/rest/model/LastFmArtist.java rename to app/src/main/java/code/name/monkey/retromusic/network/model/LastFmArtist.java index 84de1182..de593cd7 100644 --- a/app/src/main/java/code/name/monkey/retromusic/rest/model/LastFmArtist.java +++ b/app/src/main/java/code/name/monkey/retromusic/network/model/LastFmArtist.java @@ -12,7 +12,7 @@ * See the GNU General Public License for more details. */ -package code.name.monkey.retromusic.rest.model; +package code.name.monkey.retromusic.network.model; import com.google.gson.annotations.Expose; import com.google.gson.annotations.SerializedName; diff --git a/app/src/main/java/code/name/monkey/retromusic/rest/model/LastFmTrack.java b/app/src/main/java/code/name/monkey/retromusic/network/model/LastFmTrack.java similarity index 98% rename from app/src/main/java/code/name/monkey/retromusic/rest/model/LastFmTrack.java rename to app/src/main/java/code/name/monkey/retromusic/network/model/LastFmTrack.java index 45b52a68..fcb9d71a 100644 --- a/app/src/main/java/code/name/monkey/retromusic/rest/model/LastFmTrack.java +++ b/app/src/main/java/code/name/monkey/retromusic/network/model/LastFmTrack.java @@ -12,7 +12,7 @@ * See the GNU General Public License for more details. */ -package code.name.monkey.retromusic.rest.model; +package code.name.monkey.retromusic.network.model; import com.google.gson.annotations.Expose; import com.google.gson.annotations.SerializedName; diff --git a/app/src/main/java/code/name/monkey/retromusic/preferences/AlbumCoverStylePreferenceDialog.kt b/app/src/main/java/code/name/monkey/retromusic/preferences/AlbumCoverStylePreferenceDialog.kt index 51f70e06..acf4111d 100644 --- a/app/src/main/java/code/name/monkey/retromusic/preferences/AlbumCoverStylePreferenceDialog.kt +++ b/app/src/main/java/code/name/monkey/retromusic/preferences/AlbumCoverStylePreferenceDialog.kt @@ -35,13 +35,13 @@ import code.name.monkey.retromusic.App import code.name.monkey.retromusic.R import code.name.monkey.retromusic.extensions.colorButtons import code.name.monkey.retromusic.extensions.colorControlNormal +import code.name.monkey.retromusic.extensions.materialDialog import code.name.monkey.retromusic.fragments.AlbumCoverStyle import code.name.monkey.retromusic.fragments.AlbumCoverStyle.* import code.name.monkey.retromusic.util.NavigationUtil import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.ViewUtil import com.bumptech.glide.Glide -import com.google.android.material.dialog.MaterialAlertDialogBuilder class AlbumCoverStylePreference @JvmOverloads constructor( context: Context, @@ -80,9 +80,7 @@ class AlbumCoverStylePreferenceDialog : DialogFragment(), viewPager.pageMargin = ViewUtil.convertDpToPixel(32f, resources).toInt() viewPager.currentItem = PreferenceUtil.albumCoverStyle.ordinal - return MaterialAlertDialogBuilder(requireActivity(), - R.style.ThemeOverlay_MaterialComponents_Dialog_Alert) - .setTitle(R.string.pref_title_album_cover_style) + return materialDialog(R.string.pref_title_album_cover_style) .setPositiveButton(R.string.set) { _, _ -> val coverStyle = values()[viewPagerPosition] if (isAlbumCoverStyle(coverStyle)) { diff --git a/app/src/main/java/code/name/monkey/retromusic/preferences/BlacklistPreferenceDialog.kt b/app/src/main/java/code/name/monkey/retromusic/preferences/BlacklistPreferenceDialog.kt index df7a9a64..ab4a2de8 100644 --- a/app/src/main/java/code/name/monkey/retromusic/preferences/BlacklistPreferenceDialog.kt +++ b/app/src/main/java/code/name/monkey/retromusic/preferences/BlacklistPreferenceDialog.kt @@ -27,6 +27,7 @@ import code.name.monkey.retromusic.R import code.name.monkey.retromusic.dialogs.BlacklistFolderChooserDialog import code.name.monkey.retromusic.extensions.colorButtons import code.name.monkey.retromusic.extensions.colorControlNormal +import code.name.monkey.retromusic.extensions.materialDialog import code.name.monkey.retromusic.providers.BlacklistStore import com.google.android.material.dialog.MaterialAlertDialogBuilder import java.io.File @@ -60,20 +61,12 @@ class BlacklistPreferenceDialog : DialogFragment(), BlacklistFolderChooserDialog childFragmentManager.findFragmentByTag("FOLDER_CHOOSER") as BlacklistFolderChooserDialog? chooserDialog?.setCallback(this) refreshBlacklistData() - return MaterialAlertDialogBuilder( - requireActivity(), - R.style.ThemeOverlay_MaterialComponents_Dialog_Alert - ) - .setTitle(R.string.blacklist) + return materialDialog(R.string.blacklist) .setPositiveButton(android.R.string.ok) { _, _ -> dismiss() } .setNeutralButton(R.string.clear_action) { _, _ -> - MaterialAlertDialogBuilder( - requireActivity(), - R.style.ThemeOverlay_MaterialComponents_Dialog_Alert - ) - .setTitle(R.string.clear_blacklist) + materialDialog(R.string.clear_blacklist) .setMessage(R.string.do_you_want_to_clear_the_blacklist) .setPositiveButton(R.string.clear_action) { _, _ -> BlacklistStore.getInstance( @@ -91,10 +84,7 @@ class BlacklistPreferenceDialog : DialogFragment(), BlacklistFolderChooserDialog dialog.show(requireActivity().supportFragmentManager, "FOLDER_CHOOSER") } .setItems(paths.toTypedArray()) { _, which -> - MaterialAlertDialogBuilder( - requireActivity(), - R.style.ThemeOverlay_MaterialComponents_Dialog_Alert - ).setTitle(R.string.remove_from_blacklist) + materialDialog(R.string.remove_from_blacklist) .setMessage( HtmlCompat.fromHtml( String.format( diff --git a/app/src/main/java/code/name/monkey/retromusic/preferences/LibraryPreference.kt b/app/src/main/java/code/name/monkey/retromusic/preferences/LibraryPreference.kt index f0ed957e..2cdd09ce 100644 --- a/app/src/main/java/code/name/monkey/retromusic/preferences/LibraryPreference.kt +++ b/app/src/main/java/code/name/monkey/retromusic/preferences/LibraryPreference.kt @@ -31,9 +31,9 @@ import code.name.monkey.retromusic.R import code.name.monkey.retromusic.adapter.CategoryInfoAdapter import code.name.monkey.retromusic.extensions.colorButtons import code.name.monkey.retromusic.extensions.colorControlNormal +import code.name.monkey.retromusic.extensions.materialDialog import code.name.monkey.retromusic.model.CategoryInfo import code.name.monkey.retromusic.util.PreferenceUtil -import com.google.android.material.dialog.MaterialAlertDialogBuilder class LibraryPreference @JvmOverloads constructor( @@ -65,11 +65,7 @@ class LibraryPreferenceDialog : DialogFragment() { categoryAdapter.attachToRecyclerView(recyclerView) - return MaterialAlertDialogBuilder( - requireContext(), - R.style.ThemeOverlay_MaterialComponents_Dialog_Alert - ) - .setTitle(R.string.library_categories) + return materialDialog(R.string.library_categories) .setNeutralButton( R.string.reset_action ) { _, _ -> diff --git a/app/src/main/java/code/name/monkey/retromusic/preferences/NowPlayingScreenPreferenceDialog.kt b/app/src/main/java/code/name/monkey/retromusic/preferences/NowPlayingScreenPreferenceDialog.kt index fe078aa7..d5f36405 100644 --- a/app/src/main/java/code/name/monkey/retromusic/preferences/NowPlayingScreenPreferenceDialog.kt +++ b/app/src/main/java/code/name/monkey/retromusic/preferences/NowPlayingScreenPreferenceDialog.kt @@ -34,13 +34,13 @@ import code.name.monkey.retromusic.App import code.name.monkey.retromusic.R import code.name.monkey.retromusic.extensions.colorButtons import code.name.monkey.retromusic.extensions.colorControlNormal +import code.name.monkey.retromusic.extensions.materialDialog import code.name.monkey.retromusic.fragments.NowPlayingScreen import code.name.monkey.retromusic.fragments.NowPlayingScreen.* import code.name.monkey.retromusic.util.NavigationUtil import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.ViewUtil import com.bumptech.glide.Glide -import com.google.android.material.dialog.MaterialAlertDialogBuilder class NowPlayingScreenPreference @JvmOverloads constructor( context: Context, @@ -87,11 +87,7 @@ class NowPlayingScreenPreferenceDialog : DialogFragment(), ViewPager.OnPageChang viewPager.pageMargin = ViewUtil.convertDpToPixel(32f, resources).toInt() viewPager.currentItem = PreferenceUtil.nowPlayingScreen.ordinal - return MaterialAlertDialogBuilder( - requireContext(), - R.style.ThemeOverlay_MaterialComponents_Dialog_Alert - ) - .setTitle(R.string.pref_title_now_playing_screen_appearance) + return materialDialog(R.string.pref_title_now_playing_screen_appearance) .setCancelable(false) .setPositiveButton(R.string.set) { _, _ -> val nowPlayingScreen = values()[viewPagerPosition] diff --git a/app/src/main/java/code/name/monkey/retromusic/providers/ProviderModule.kt b/app/src/main/java/code/name/monkey/retromusic/providers/ProviderModule.kt index 00588a7c..a5874e77 100644 --- a/app/src/main/java/code/name/monkey/retromusic/providers/ProviderModule.kt +++ b/app/src/main/java/code/name/monkey/retromusic/providers/ProviderModule.kt @@ -6,6 +6,6 @@ import org.koin.dsl.module val provideModules = module { single { - RepositoryImpl(get()) + RepositoryImpl(get(), get()) } bind Repository::class } \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/providers/RepositoryImpl.kt b/app/src/main/java/code/name/monkey/retromusic/providers/RepositoryImpl.kt index 99b094c4..367b646f 100644 --- a/app/src/main/java/code/name/monkey/retromusic/providers/RepositoryImpl.kt +++ b/app/src/main/java/code/name/monkey/retromusic/providers/RepositoryImpl.kt @@ -20,12 +20,15 @@ import code.name.monkey.retromusic.adapter.HomeAdapter import code.name.monkey.retromusic.loaders.* import code.name.monkey.retromusic.model.* import code.name.monkey.retromusic.model.smartplaylist.NotRecentlyPlayedPlaylist +import code.name.monkey.retromusic.network.LastFMService +import code.name.monkey.retromusic.network.model.LastFmAlbum +import code.name.monkey.retromusic.network.model.LastFmArtist import code.name.monkey.retromusic.providers.interfaces.Repository -import code.name.monkey.retromusic.rest.LastFmClient -import code.name.monkey.retromusic.rest.model.LastFmAlbum -import code.name.monkey.retromusic.rest.model.LastFmArtist -class RepositoryImpl constructor(private val context: Context) : Repository { +class RepositoryImpl( + private val context: Context, + private val lastFMService: LastFMService +) : Repository { override suspend fun allAlbums(): List = AlbumLoader.getAllAlbums(context) @@ -121,12 +124,12 @@ class RepositoryImpl constructor(private val context: Context) : Repository { name: String, lang: String?, cache: String? - ): LastFmArtist = LastFmClient.getApiService().artistInfo(name, lang, cache) + ): LastFmArtist = lastFMService.artistInfo(name, lang, cache) override suspend fun albumInfo( artist: String, album: String - ): LastFmAlbum = LastFmClient.getApiService().albumInfo(artist, album) + ): LastFmAlbum = lastFMService.albumInfo(artist, album) } \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/providers/interfaces/Repository.kt b/app/src/main/java/code/name/monkey/retromusic/providers/interfaces/Repository.kt index 95eada80..2f2d6f83 100644 --- a/app/src/main/java/code/name/monkey/retromusic/providers/interfaces/Repository.kt +++ b/app/src/main/java/code/name/monkey/retromusic/providers/interfaces/Repository.kt @@ -15,8 +15,8 @@ package code.name.monkey.retromusic.providers.interfaces import code.name.monkey.retromusic.model.* -import code.name.monkey.retromusic.rest.model.LastFmAlbum -import code.name.monkey.retromusic.rest.model.LastFmArtist +import code.name.monkey.retromusic.network.model.LastFmAlbum +import code.name.monkey.retromusic.network.model.LastFmArtist /** * Created by hemanths on 11/08/17. diff --git a/app/src/main/java/code/name/monkey/retromusic/rest/LastFmClient.kt b/app/src/main/java/code/name/monkey/retromusic/rest/LastFmClient.kt deleted file mode 100644 index f2449e72..00000000 --- a/app/src/main/java/code/name/monkey/retromusic/rest/LastFmClient.kt +++ /dev/null @@ -1,69 +0,0 @@ -package code.name.monkey.retromusic.rest - -import code.name.monkey.retromusic.App -import code.name.monkey.retromusic.rest.service.LastFMService -import com.google.gson.Gson -import okhttp3.Cache -import okhttp3.ConnectionPool -import okhttp3.Interceptor -import okhttp3.Interceptor.Chain -import okhttp3.OkHttpClient -import okhttp3.logging.HttpLoggingInterceptor -import retrofit2.Retrofit -import retrofit2.converter.gson.GsonConverterFactory -import java.io.File -import java.util.concurrent.TimeUnit - -object LastFmClient { - private const val baseUrl = "https://ws.audioscrobbler.com/2.0/" - - private var lastFMService: LastFMService - - fun getApiService(): LastFMService { - return lastFMService - } - - init { - lastFMService = Retrofit.Builder() - .baseUrl(baseUrl) - .callFactory(createDefaultOkHttpClientBuilder().build()) - .addConverterFactory(GsonConverterFactory.create(Gson())) - .build() - .create(LastFMService::class.java) - } - - private fun createDefaultOkHttpClientBuilder(): OkHttpClient.Builder { - return OkHttpClient.Builder() - .connectionPool(ConnectionPool(0, 1, TimeUnit.NANOSECONDS)) - .retryOnConnectionFailure(true) - .connectTimeout(1, TimeUnit.MINUTES) // connect timeout - .writeTimeout(1, TimeUnit.MINUTES) // write timeout - .readTimeout(1, TimeUnit.MINUTES) // read timeout - .cache(createDefaultCache()) - .addInterceptor(createCacheControlInterceptor()) - .addInterceptor(createLogInterceptor()) - } - - private fun createLogInterceptor(): Interceptor { - val interceptor = HttpLoggingInterceptor() - interceptor.level = HttpLoggingInterceptor.Level.BASIC - return interceptor - } - - private fun createCacheControlInterceptor(): Interceptor { - return Interceptor { chain: Chain -> - val modifiedRequest = chain.request().newBuilder() - .addHeader("Cache-Control", "max-age=31536000, max-stale=31536000") - .build() - chain.proceed(modifiedRequest) - } - } - - private fun createDefaultCache(): Cache? { - val cacheDir = File(App.getContext().cacheDir.absolutePath, "/okhttp-lastfm/") - if (cacheDir.mkdirs() || cacheDir.isDirectory) { - return Cache(cacheDir, 1024 * 1024 * 10) - } - return null - } -} \ No newline at end of file