diff --git a/app/src/main/java/com/cappielloantonio/play/App.java b/app/src/main/java/com/cappielloantonio/play/App.java index 7bb8dcd0..0b51d80f 100644 --- a/app/src/main/java/com/cappielloantonio/play/App.java +++ b/app/src/main/java/com/cappielloantonio/play/App.java @@ -15,6 +15,7 @@ import com.google.android.material.color.DynamicColors; public class App extends Application { private static App instance; + private static Context context; private static Subsonic subsonic; private static SharedPreferences preferences; @@ -27,6 +28,8 @@ public class App extends Application { String themePref = sharedPreferences.getString(Preferences.THEME, ThemeHelper.DEFAULT_MODE); ThemeHelper.applyTheme(themePref); + instance = new App(); + context = getApplicationContext(); preferences = getSharedPreferences(Constants.SHARED_PREF_KEY, Context.MODE_PRIVATE); } @@ -34,12 +37,21 @@ public class App extends Application { if (instance == null) { instance = new App(); } + return instance; } - public static Subsonic getSubsonicClientInstance(Context context, boolean override) { + public static Context getContext() { + if (context == null) { + context = getInstance(); + } + + return context; + } + + public static Subsonic getSubsonicClientInstance(boolean override) { if (subsonic == null || override) { - subsonic = getSubsonicClient(context); + subsonic = getSubsonicClient(); } return subsonic; } @@ -52,7 +64,7 @@ public class App extends Application { return preferences; } - private static Subsonic getSubsonicClient(Context context) { + private static Subsonic getSubsonicClient() { String server = Preferences.getServer(); String username = Preferences.getUser(); String password = Preferences.getPassword(); @@ -74,6 +86,6 @@ public class App extends Application { Preferences.setSalt(preferences.getAuthentication().getSalt()); } - return new Subsonic(context, preferences); + return new Subsonic(preferences); } } diff --git a/app/src/main/java/com/cappielloantonio/play/adapter/AlbumAdapter.java b/app/src/main/java/com/cappielloantonio/play/adapter/AlbumAdapter.java index ec635dba..11586c63 100644 --- a/app/src/main/java/com/cappielloantonio/play/adapter/AlbumAdapter.java +++ b/app/src/main/java/com/cappielloantonio/play/adapter/AlbumAdapter.java @@ -1,19 +1,15 @@ package com.cappielloantonio.play.adapter; -import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; -import android.view.View; import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.load.resource.bitmap.CenterCrop; import com.bumptech.glide.load.resource.bitmap.RoundedCorners; -import com.cappielloantonio.play.R; +import com.cappielloantonio.play.databinding.ItemLibraryAlbumBinding; import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.subsonic.models.AlbumID3; @@ -23,13 +19,11 @@ import java.util.Collections; import java.util.List; public class AlbumAdapter extends RecyclerView.Adapter { - private final Context context; private final ClickCallback click; private List albums; - public AlbumAdapter(Context context, ClickCallback click) { - this.context = context; + public AlbumAdapter(ClickCallback click) { this.click = click; this.albums = Collections.emptyList(); } @@ -37,7 +31,7 @@ public class AlbumAdapter extends RecyclerView.Adapter @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - View view = LayoutInflater.from(context).inflate(R.layout.item_library_album, parent, false); + ItemLibraryAlbumBinding view = ItemLibraryAlbumBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); return new ViewHolder(view); } @@ -45,14 +39,14 @@ public class AlbumAdapter extends RecyclerView.Adapter public void onBindViewHolder(ViewHolder holder, int position) { AlbumID3 album = albums.get(position); - holder.textAlbumName.setText(MusicUtil.getReadableString(album.getName())); - holder.textArtistName.setText(MusicUtil.getReadableString(album.getArtist())); + holder.item.albumNameLabel.setText(MusicUtil.getReadableString(album.getName())); + holder.item.artistNameLabel.setText(MusicUtil.getReadableString(album.getArtist())); CustomGlideRequest.Builder - .from(context, album.getCoverArtId(), CustomGlideRequest.ALBUM_PIC, null) + .from(holder.itemView.getContext(), album.getCoverArtId(), CustomGlideRequest.ALBUM_PIC, null) .build() .transform(new CenterCrop(), new RoundedCorners(CustomGlideRequest.CORNER_RADIUS)) - .into(holder.cover); + .into(holder.item.albumCoverImageView); } @Override @@ -70,19 +64,15 @@ public class AlbumAdapter extends RecyclerView.Adapter } public class ViewHolder extends RecyclerView.ViewHolder { - TextView textAlbumName; - TextView textArtistName; - ImageView cover; + ItemLibraryAlbumBinding item; - ViewHolder(View itemView) { - super(itemView); + ViewHolder(ItemLibraryAlbumBinding item) { + super(item.getRoot()); - textAlbumName = itemView.findViewById(R.id.album_name_label); - textArtistName = itemView.findViewById(R.id.artist_name_label); - cover = itemView.findViewById(R.id.album_cover_image_view); + this.item = item; - textAlbumName.setSelected(true); - textArtistName.setSelected(true); + item.albumNameLabel.setSelected(true); + item.artistNameLabel.setSelected(true); itemView.setOnClickListener(v -> onClick()); itemView.setOnLongClickListener(v -> onLongClick()); diff --git a/app/src/main/java/com/cappielloantonio/play/adapter/AlbumArtistPageOrSimilarAdapter.java b/app/src/main/java/com/cappielloantonio/play/adapter/AlbumArtistPageOrSimilarAdapter.java index 2d680741..90a39205 100644 --- a/app/src/main/java/com/cappielloantonio/play/adapter/AlbumArtistPageOrSimilarAdapter.java +++ b/app/src/main/java/com/cappielloantonio/play/adapter/AlbumArtistPageOrSimilarAdapter.java @@ -1,19 +1,15 @@ package com.cappielloantonio.play.adapter; -import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; -import android.view.View; import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.load.resource.bitmap.CenterCrop; import com.bumptech.glide.load.resource.bitmap.RoundedCorners; -import com.cappielloantonio.play.R; +import com.cappielloantonio.play.databinding.ItemLibraryArtistPageOrSimilarAlbumBinding; import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.subsonic.models.AlbumID3; @@ -23,13 +19,11 @@ import java.util.Collections; import java.util.List; public class AlbumArtistPageOrSimilarAdapter extends RecyclerView.Adapter { - private final Context context; private final ClickCallback click; private List albums; - public AlbumArtistPageOrSimilarAdapter(Context context, ClickCallback click) { - this.context = context; + public AlbumArtistPageOrSimilarAdapter(ClickCallback click) { this.click = click; this.albums = Collections.emptyList(); } @@ -37,7 +31,7 @@ public class AlbumArtistPageOrSimilarAdapter extends RecyclerView.Adapter onClick()); itemView.setOnLongClickListener(v -> onLongClick()); diff --git a/app/src/main/java/com/cappielloantonio/play/adapter/AlbumCatalogueAdapter.java b/app/src/main/java/com/cappielloantonio/play/adapter/AlbumCatalogueAdapter.java index 6f9f0b25..90349010 100644 --- a/app/src/main/java/com/cappielloantonio/play/adapter/AlbumCatalogueAdapter.java +++ b/app/src/main/java/com/cappielloantonio/play/adapter/AlbumCatalogueAdapter.java @@ -1,21 +1,17 @@ package com.cappielloantonio.play.adapter; -import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; -import android.view.View; import android.view.ViewGroup; import android.widget.Filter; import android.widget.Filterable; -import android.widget.ImageView; -import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.load.resource.bitmap.CenterCrop; import com.bumptech.glide.load.resource.bitmap.RoundedCorners; -import com.cappielloantonio.play.R; +import com.cappielloantonio.play.databinding.ItemLibraryCatalogueAlbumBinding; import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.model.Album; @@ -28,7 +24,6 @@ import java.util.Comparator; import java.util.List; public class AlbumCatalogueAdapter extends RecyclerView.Adapter implements Filterable { - private final Context context; private final ClickCallback click; private final Filter filtering = new Filter() { @Override @@ -64,8 +59,7 @@ public class AlbumCatalogueAdapter extends RecyclerView.Adapter albums; private List albumsFull; - public AlbumCatalogueAdapter(Context context, ClickCallback click) { - this.context = context; + public AlbumCatalogueAdapter(ClickCallback click) { this.click = click; this.albums = Collections.emptyList(); } @@ -73,7 +67,7 @@ public class AlbumCatalogueAdapter extends RecyclerView.Adapter onClick()); itemView.setOnLongClickListener(v -> onLongClick()); diff --git a/app/src/main/java/com/cappielloantonio/play/adapter/AlbumHorizontalAdapter.java b/app/src/main/java/com/cappielloantonio/play/adapter/AlbumHorizontalAdapter.java index 6401a95e..66f036b1 100644 --- a/app/src/main/java/com/cappielloantonio/play/adapter/AlbumHorizontalAdapter.java +++ b/app/src/main/java/com/cappielloantonio/play/adapter/AlbumHorizontalAdapter.java @@ -1,19 +1,15 @@ package com.cappielloantonio.play.adapter; -import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; -import android.view.View; import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.load.resource.bitmap.CenterCrop; import com.bumptech.glide.load.resource.bitmap.RoundedCorners; -import com.cappielloantonio.play.R; +import com.cappielloantonio.play.databinding.ItemHorizontalAlbumBinding; import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.subsonic.models.AlbumID3; @@ -23,14 +19,12 @@ import java.util.Collections; import java.util.List; public class AlbumHorizontalAdapter extends RecyclerView.Adapter { - private final Context context; private final ClickCallback click; private final boolean isOffline; private List albums; - public AlbumHorizontalAdapter(Context context, ClickCallback click, boolean isOffline) { - this.context = context; + public AlbumHorizontalAdapter(ClickCallback click, boolean isOffline) { this.click = click; this.isOffline = isOffline; this.albums = Collections.emptyList(); @@ -39,7 +33,7 @@ public class AlbumHorizontalAdapter extends RecyclerView.Adapter onClick()); itemView.setOnLongClickListener(v -> onLongClick()); - more.setOnClickListener(v -> onLongClick()); + item.albumMoreButton.setOnClickListener(v -> onLongClick()); } private void onClick() { diff --git a/app/src/main/java/com/cappielloantonio/play/adapter/ArtistAdapter.java b/app/src/main/java/com/cappielloantonio/play/adapter/ArtistAdapter.java index 85f32934..a63d41be 100644 --- a/app/src/main/java/com/cappielloantonio/play/adapter/ArtistAdapter.java +++ b/app/src/main/java/com/cappielloantonio/play/adapter/ArtistAdapter.java @@ -1,12 +1,8 @@ package com.cappielloantonio.play.adapter; -import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; -import android.view.View; import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; import androidx.annotation.NonNull; import androidx.media3.common.util.UnstableApi; @@ -14,7 +10,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.load.resource.bitmap.CenterCrop; import com.bumptech.glide.load.resource.bitmap.RoundedCorners; -import com.cappielloantonio.play.R; +import com.cappielloantonio.play.databinding.ItemLibraryArtistBinding; import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.subsonic.models.ArtistID3; @@ -25,15 +21,13 @@ import java.util.List; @UnstableApi public class ArtistAdapter extends RecyclerView.Adapter { - private final Context context; private final ClickCallback click; private final boolean mix; private final boolean bestOf; private List artists; - public ArtistAdapter(Context context, ClickCallback click, Boolean mix, Boolean bestOf) { - this.context = context; + public ArtistAdapter(ClickCallback click, Boolean mix, Boolean bestOf) { this.click = click; this.mix = mix; this.bestOf = bestOf; @@ -43,7 +37,7 @@ public class ArtistAdapter extends RecyclerView.Adapter onClick()); itemView.setOnLongClickListener(v -> onLongClick()); diff --git a/app/src/main/java/com/cappielloantonio/play/adapter/ArtistCatalogueAdapter.java b/app/src/main/java/com/cappielloantonio/play/adapter/ArtistCatalogueAdapter.java index 8120240b..28a52016 100644 --- a/app/src/main/java/com/cappielloantonio/play/adapter/ArtistCatalogueAdapter.java +++ b/app/src/main/java/com/cappielloantonio/play/adapter/ArtistCatalogueAdapter.java @@ -1,21 +1,17 @@ package com.cappielloantonio.play.adapter; -import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; -import android.view.View; import android.view.ViewGroup; import android.widget.Filter; import android.widget.Filterable; -import android.widget.ImageView; -import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.load.resource.bitmap.CenterCrop; import com.bumptech.glide.load.resource.bitmap.RoundedCorners; -import com.cappielloantonio.play.R; +import com.cappielloantonio.play.databinding.ItemLibraryCatalogueArtistBinding; import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.model.Artist; @@ -28,7 +24,6 @@ import java.util.Comparator; import java.util.List; public class ArtistCatalogueAdapter extends RecyclerView.Adapter implements Filterable { - private final Context context; private final ClickCallback click; private final Filter filtering = new Filter() { @@ -65,8 +60,7 @@ public class ArtistCatalogueAdapter extends RecyclerView.Adapter artists; private List artistFull; - public ArtistCatalogueAdapter(Context context, ClickCallback click) { - this.context = context; + public ArtistCatalogueAdapter(ClickCallback click) { this.click = click; this.artists = Collections.emptyList(); } @@ -74,7 +68,7 @@ public class ArtistCatalogueAdapter extends RecyclerView.Adapter onClick()); itemView.setOnLongClickListener(v -> onLongClick()); diff --git a/app/src/main/java/com/cappielloantonio/play/adapter/ArtistHorizontalAdapter.java b/app/src/main/java/com/cappielloantonio/play/adapter/ArtistHorizontalAdapter.java index 47fa80a3..50a4fb23 100644 --- a/app/src/main/java/com/cappielloantonio/play/adapter/ArtistHorizontalAdapter.java +++ b/app/src/main/java/com/cappielloantonio/play/adapter/ArtistHorizontalAdapter.java @@ -1,19 +1,16 @@ package com.cappielloantonio.play.adapter; -import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.load.resource.bitmap.CenterCrop; import com.bumptech.glide.load.resource.bitmap.RoundedCorners; -import com.cappielloantonio.play.R; +import com.cappielloantonio.play.databinding.ItemHorizontalArtistBinding; import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.subsonic.models.ArtistID3; @@ -23,13 +20,11 @@ import java.util.Collections; import java.util.List; public class ArtistHorizontalAdapter extends RecyclerView.Adapter { - private final Context context; private final ClickCallback click; private List artists; - public ArtistHorizontalAdapter(Context context, ClickCallback click) { - this.context = context; + public ArtistHorizontalAdapter(ClickCallback click) { this.click = click; this.artists = Collections.emptyList(); } @@ -37,7 +32,7 @@ public class ArtistHorizontalAdapter extends RecyclerView.Adapter 0) { - holder.artistInfo.setText("Album count: " + artist.getAlbumCount()); + holder.item.artistInfoTextView.setText("Album count: " + artist.getAlbumCount()); } else { - holder.artistInfo.setVisibility(View.GONE); + holder.item.artistInfoTextView.setVisibility(View.GONE); } - setArtistCover(artist, holder.cover); + CustomGlideRequest.Builder + .from(holder.itemView.getContext(), artist.getCoverArtId(), CustomGlideRequest.ARTIST_PIC, null) + .build() + .transform(new CenterCrop(), new RoundedCorners(CustomGlideRequest.CORNER_RADIUS)) + .into(holder.item.artistCoverImageView); } @Override @@ -80,35 +79,20 @@ public class ArtistHorizontalAdapter extends RecyclerView.Adapter onClick()); itemView.setOnLongClickListener(v -> onLongClick()); - more.setOnClickListener(v -> onLongClick()); + item.artistMoreButton.setOnClickListener(v -> onLongClick()); } private void onClick() { diff --git a/app/src/main/java/com/cappielloantonio/play/adapter/ArtistSimilarAdapter.java b/app/src/main/java/com/cappielloantonio/play/adapter/ArtistSimilarAdapter.java index 35f0f24a..1c7519df 100644 --- a/app/src/main/java/com/cappielloantonio/play/adapter/ArtistSimilarAdapter.java +++ b/app/src/main/java/com/cappielloantonio/play/adapter/ArtistSimilarAdapter.java @@ -1,19 +1,15 @@ package com.cappielloantonio.play.adapter; -import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; -import android.view.View; import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.load.resource.bitmap.CenterCrop; import com.bumptech.glide.load.resource.bitmap.RoundedCorners; -import com.cappielloantonio.play.R; +import com.cappielloantonio.play.databinding.ItemLibrarySimilarArtistBinding; import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.subsonic.models.SimilarArtistID3; @@ -23,13 +19,11 @@ import java.util.Collections; import java.util.List; public class ArtistSimilarAdapter extends RecyclerView.Adapter { - private final Context context; private final ClickCallback click; private List artists; - public ArtistSimilarAdapter(Context context, ClickCallback click) { - this.context = context; + public ArtistSimilarAdapter(ClickCallback click) { this.click = click; this.artists = Collections.emptyList(); } @@ -37,7 +31,7 @@ public class ArtistSimilarAdapter extends RecyclerView.Adapter onClick()); itemView.setOnLongClickListener(v -> onLongClick()); - textArtistName.setSelected(true); + item.artistNameLabel.setSelected(true); } public void onClick() { diff --git a/app/src/main/java/com/cappielloantonio/play/adapter/DiscoverSongAdapter.java b/app/src/main/java/com/cappielloantonio/play/adapter/DiscoverSongAdapter.java index 76d59eae..98ac1b53 100644 --- a/app/src/main/java/com/cappielloantonio/play/adapter/DiscoverSongAdapter.java +++ b/app/src/main/java/com/cappielloantonio/play/adapter/DiscoverSongAdapter.java @@ -1,18 +1,14 @@ package com.cappielloantonio.play.adapter; -import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; -import android.view.View; import android.view.ViewGroup; import android.view.animation.AccelerateDecelerateInterpolator; -import android.widget.ImageView; -import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; -import com.cappielloantonio.play.R; +import com.cappielloantonio.play.databinding.ItemHomeDiscoverSongBinding; import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.subsonic.models.Child; @@ -22,13 +18,11 @@ import java.util.Collections; import java.util.List; public class DiscoverSongAdapter extends RecyclerView.Adapter { - private final Context context; private final ClickCallback click; private List songs; - public DiscoverSongAdapter(Context context, ClickCallback click) { - this.context = context; + public DiscoverSongAdapter(ClickCallback click) { this.click = click; this.songs = Collections.emptyList(); } @@ -36,7 +30,7 @@ public class DiscoverSongAdapter extends RecyclerView.Adapter onClick()); } @@ -94,7 +84,7 @@ public class DiscoverSongAdapter extends RecyclerView.Adapter { - private final Context context; private final ClickCallback click; private List songs; - public DownloadHorizontalAdapter(Context context, ClickCallback click) { - this.context = context; + public DownloadHorizontalAdapter(ClickCallback click) { this.click = click; this.songs = Collections.emptyList(); } @@ -38,7 +34,7 @@ public class DownloadHorizontalAdapter extends RecyclerView.Adapter 0 && songs.get(position - 1) != null && !Objects.equals(songs.get(position - 1).getAlbum(), songs.get(position).getAlbum())) { - holder.divider.setPadding(0, 12, 0, 0); + holder.item.divider.setPadding(0, 12, 0, 0); } else { - if (position > 0) holder.divider.setVisibility(View.GONE); + if (position > 0) holder.item.divider.setVisibility(View.GONE); } } @@ -72,28 +68,20 @@ public class DownloadHorizontalAdapter extends RecyclerView.Adapter onClick()); itemView.setOnLongClickListener(v -> onLongClick()); - more.setOnClickListener(v -> onLongClick()); + item.downloadedSongMoreButton.setOnClickListener(v -> onLongClick()); } public void onClick() { diff --git a/app/src/main/java/com/cappielloantonio/play/adapter/GenreAdapter.java b/app/src/main/java/com/cappielloantonio/play/adapter/GenreAdapter.java index bd61b9f4..649b5d41 100644 --- a/app/src/main/java/com/cappielloantonio/play/adapter/GenreAdapter.java +++ b/app/src/main/java/com/cappielloantonio/play/adapter/GenreAdapter.java @@ -1,16 +1,13 @@ package com.cappielloantonio.play.adapter; -import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; -import android.view.View; import android.view.ViewGroup; -import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; -import com.cappielloantonio.play.R; +import com.cappielloantonio.play.databinding.ItemLibraryGenreBinding; import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.model.Media; import com.cappielloantonio.play.subsonic.models.Genre; @@ -20,13 +17,11 @@ import java.util.Collections; import java.util.List; public class GenreAdapter extends RecyclerView.Adapter { - private final Context context; - private ClickCallback click; + private final ClickCallback click; private List genres; - public GenreAdapter(Context context, ClickCallback click) { - this.context = context; + public GenreAdapter(ClickCallback click) { this.click = click; this.genres = Collections.emptyList(); } @@ -34,7 +29,7 @@ public class GenreAdapter extends RecyclerView.Adapter @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - View view = LayoutInflater.from(context).inflate(R.layout.item_library_genre, parent, false); + ItemLibraryGenreBinding view = ItemLibraryGenreBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); return new ViewHolder(view); } @@ -42,7 +37,7 @@ public class GenreAdapter extends RecyclerView.Adapter public void onBindViewHolder(ViewHolder holder, int position) { Genre genre = genres.get(position); - holder.textGenre.setText(MusicUtil.getReadableString(genre.getGenre())); + holder.item.genreLabel.setText(MusicUtil.getReadableString(genre.getGenre())); } @Override @@ -60,12 +55,12 @@ public class GenreAdapter extends RecyclerView.Adapter } public class ViewHolder extends RecyclerView.ViewHolder { - TextView textGenre; + ItemLibraryGenreBinding item; - ViewHolder(View itemView) { - super(itemView); + ViewHolder(ItemLibraryGenreBinding item) { + super(item.getRoot()); - textGenre = itemView.findViewById(R.id.genre_label); + this.item = item; itemView.setOnClickListener(v -> onClick()); } diff --git a/app/src/main/java/com/cappielloantonio/play/adapter/GenreCatalogueAdapter.java b/app/src/main/java/com/cappielloantonio/play/adapter/GenreCatalogueAdapter.java index c4efa624..b7d965be 100644 --- a/app/src/main/java/com/cappielloantonio/play/adapter/GenreCatalogueAdapter.java +++ b/app/src/main/java/com/cappielloantonio/play/adapter/GenreCatalogueAdapter.java @@ -1,18 +1,15 @@ package com.cappielloantonio.play.adapter; -import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; -import android.view.View; import android.view.ViewGroup; import android.widget.Filter; import android.widget.Filterable; -import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; -import com.cappielloantonio.play.R; +import com.cappielloantonio.play.databinding.ItemLibraryCatalogueGenreBinding; import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.model.Media; import com.cappielloantonio.play.subsonic.models.Genre; @@ -24,7 +21,6 @@ import java.util.Comparator; import java.util.List; public class GenreCatalogueAdapter extends RecyclerView.Adapter implements Filterable { - private final Context context; private final ClickCallback click; private final Filter filtering = new Filter() { @@ -61,8 +57,7 @@ public class GenreCatalogueAdapter extends RecyclerView.Adapter genres; private List genresFull; - public GenreCatalogueAdapter(Context context, ClickCallback click) { - this.context = context; + public GenreCatalogueAdapter(ClickCallback click) { this.click = click; this.genres = Collections.emptyList(); } @@ -70,7 +65,7 @@ public class GenreCatalogueAdapter extends RecyclerView.Adapter { Bundle bundle = new Bundle(); diff --git a/app/src/main/java/com/cappielloantonio/play/adapter/GridTrackAdapter.java b/app/src/main/java/com/cappielloantonio/play/adapter/GridTrackAdapter.java index f512143d..8c650242 100644 --- a/app/src/main/java/com/cappielloantonio/play/adapter/GridTrackAdapter.java +++ b/app/src/main/java/com/cappielloantonio/play/adapter/GridTrackAdapter.java @@ -1,18 +1,15 @@ package com.cappielloantonio.play.adapter; -import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; -import android.view.View; import android.view.ViewGroup; -import android.widget.ImageView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.load.resource.bitmap.CenterCrop; import com.bumptech.glide.load.resource.bitmap.RoundedCorners; -import com.cappielloantonio.play.R; +import com.cappielloantonio.play.databinding.ItemHomeGridTrackBinding; import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.model.Chronology; @@ -22,13 +19,11 @@ import java.util.Collections; import java.util.List; public class GridTrackAdapter extends RecyclerView.Adapter { - private final Context context; private final ClickCallback click; private List items; - public GridTrackAdapter(Context context, ClickCallback click) { - this.context = context; + public GridTrackAdapter(ClickCallback click) { this.click = click; this.items = Collections.emptyList(); } @@ -36,7 +31,7 @@ public class GridTrackAdapter extends RecyclerView.Adapter onClick()); } diff --git a/app/src/main/java/com/cappielloantonio/play/adapter/PlayerSongQueueAdapter.java b/app/src/main/java/com/cappielloantonio/play/adapter/PlayerSongQueueAdapter.java index 93fbed1e..8cd3293a 100644 --- a/app/src/main/java/com/cappielloantonio/play/adapter/PlayerSongQueueAdapter.java +++ b/app/src/main/java/com/cappielloantonio/play/adapter/PlayerSongQueueAdapter.java @@ -1,12 +1,9 @@ package com.cappielloantonio.play.adapter; -import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; import androidx.annotation.NonNull; import androidx.media3.session.MediaBrowser; @@ -15,6 +12,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.load.resource.bitmap.CenterCrop; import com.bumptech.glide.load.resource.bitmap.RoundedCorners; import com.cappielloantonio.play.R; +import com.cappielloantonio.play.databinding.ItemPlayerQueueSongBinding; import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.service.MediaManager; @@ -27,14 +25,12 @@ import java.util.Collections; import java.util.List; public class PlayerSongQueueAdapter extends RecyclerView.Adapter { - private final Context context; private final ClickCallback click; private ListenableFuture mediaBrowserListenableFuture; private List songs; - public PlayerSongQueueAdapter(Context context, ClickCallback click) { - this.context = context; + public PlayerSongQueueAdapter(ClickCallback click) { this.click = click; this.songs = Collections.emptyList(); } @@ -42,7 +38,7 @@ public class PlayerSongQueueAdapter extends RecyclerView.Adapter { - holder.play.setVisibility(position == index ? View.VISIBLE : View.INVISIBLE); + holder.item.queueSongPlayImageView.setVisibility(position == index ? View.VISIBLE : View.INVISIBLE); }); } @@ -87,21 +83,15 @@ public class PlayerSongQueueAdapter extends RecyclerView.Adapter onClick()); } diff --git a/app/src/main/java/com/cappielloantonio/play/adapter/PlaylistDialogHorizontalAdapter.java b/app/src/main/java/com/cappielloantonio/play/adapter/PlaylistDialogHorizontalAdapter.java index ca84930c..6bf618a2 100644 --- a/app/src/main/java/com/cappielloantonio/play/adapter/PlaylistDialogHorizontalAdapter.java +++ b/app/src/main/java/com/cappielloantonio/play/adapter/PlaylistDialogHorizontalAdapter.java @@ -1,16 +1,14 @@ package com.cappielloantonio.play.adapter; -import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; -import android.view.View; import android.view.ViewGroup; -import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.cappielloantonio.play.R; +import com.cappielloantonio.play.databinding.ItemHorizontalPlaylistDialogBinding; import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.subsonic.models.Playlist; import com.cappielloantonio.play.util.MusicUtil; @@ -19,13 +17,11 @@ import java.util.Collections; import java.util.List; public class PlaylistDialogHorizontalAdapter extends RecyclerView.Adapter { - private final Context context; private final ClickCallback click; private List playlists; - public PlaylistDialogHorizontalAdapter(Context context, ClickCallback click) { - this.context = context; + public PlaylistDialogHorizontalAdapter(ClickCallback click) { this.click = click; this.playlists = Collections.emptyList(); } @@ -33,7 +29,7 @@ public class PlaylistDialogHorizontalAdapter extends RecyclerView.Adapter onClick()); } diff --git a/app/src/main/java/com/cappielloantonio/play/adapter/PlaylistDialogSongHorizontalAdapter.java b/app/src/main/java/com/cappielloantonio/play/adapter/PlaylistDialogSongHorizontalAdapter.java index dc072d33..b74b6aeb 100644 --- a/app/src/main/java/com/cappielloantonio/play/adapter/PlaylistDialogSongHorizontalAdapter.java +++ b/app/src/main/java/com/cappielloantonio/play/adapter/PlaylistDialogSongHorizontalAdapter.java @@ -1,18 +1,14 @@ package com.cappielloantonio.play.adapter; -import android.content.Context; import android.view.LayoutInflater; -import android.view.View; import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.load.resource.bitmap.CenterCrop; import com.bumptech.glide.load.resource.bitmap.RoundedCorners; -import com.cappielloantonio.play.R; +import com.cappielloantonio.play.databinding.ItemHorizontalPlaylistDialogTrackBinding; import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.subsonic.models.Child; import com.cappielloantonio.play.util.MusicUtil; @@ -21,19 +17,16 @@ import java.util.Collections; import java.util.List; public class PlaylistDialogSongHorizontalAdapter extends RecyclerView.Adapter { - private final Context context; - private List songs; - public PlaylistDialogSongHorizontalAdapter(Context context) { - this.context = context; + public PlaylistDialogSongHorizontalAdapter() { this.songs = Collections.emptyList(); } @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - View view = LayoutInflater.from(context).inflate(R.layout.item_horizontal_playlist_dialog_track, parent, false); + ItemHorizontalPlaylistDialogTrackBinding view = ItemHorizontalPlaylistDialogTrackBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); return new ViewHolder(view); } @@ -41,15 +34,15 @@ public class PlaylistDialogSongHorizontalAdapter extends RecyclerView.Adapter implements Filterable { - private final Context context; private final ClickCallback click; private List playlists; @@ -60,8 +57,7 @@ public class PlaylistHorizontalAdapter extends RecyclerView.Adapter onClick()); itemView.setOnLongClickListener(v -> onLongClick()); diff --git a/app/src/main/java/com/cappielloantonio/play/adapter/PodcastEpisodeAdapter.java b/app/src/main/java/com/cappielloantonio/play/adapter/PodcastEpisodeAdapter.java index 1ca831c0..e535aa92 100644 --- a/app/src/main/java/com/cappielloantonio/play/adapter/PodcastEpisodeAdapter.java +++ b/app/src/main/java/com/cappielloantonio/play/adapter/PodcastEpisodeAdapter.java @@ -1,13 +1,8 @@ package com.cappielloantonio.play.adapter; -import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; -import android.view.View; import android.view.ViewGroup; -import android.widget.Button; -import android.widget.ImageView; -import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; @@ -15,6 +10,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.load.resource.bitmap.CenterCrop; import com.bumptech.glide.load.resource.bitmap.RoundedCorners; import com.cappielloantonio.play.R; +import com.cappielloantonio.play.databinding.ItemHomePodcastEpisodeBinding; import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.subsonic.models.PodcastEpisode; @@ -25,13 +21,11 @@ import java.util.Collections; import java.util.List; public class PodcastEpisodeAdapter extends RecyclerView.Adapter { - private final Context context; private final ClickCallback click; private List podcastEpisodes; - public PodcastEpisodeAdapter(Context context, ClickCallback click) { - this.context = context; + public PodcastEpisodeAdapter(ClickCallback click) { this.click = click; this.podcastEpisodes = Collections.emptyList(); } @@ -39,7 +33,7 @@ public class PodcastEpisodeAdapter extends RecyclerView.Adapter onClick()); - moreButton.setOnLongClickListener(v -> openMore()); + item.podcastMoreButton.setOnLongClickListener(v -> openMore()); } public void onClick() { diff --git a/app/src/main/java/com/cappielloantonio/play/adapter/ServerAdapter.java b/app/src/main/java/com/cappielloantonio/play/adapter/ServerAdapter.java index 10a3c5f3..dd7dd79c 100644 --- a/app/src/main/java/com/cappielloantonio/play/adapter/ServerAdapter.java +++ b/app/src/main/java/com/cappielloantonio/play/adapter/ServerAdapter.java @@ -1,16 +1,13 @@ package com.cappielloantonio.play.adapter; -import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; -import android.view.View; import android.view.ViewGroup; -import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; -import com.cappielloantonio.play.R; +import com.cappielloantonio.play.databinding.ItemLoginServerBinding; import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.model.Server; @@ -18,13 +15,11 @@ import java.util.ArrayList; import java.util.List; public class ServerAdapter extends RecyclerView.Adapter { - private final Context context; private final ClickCallback click; private List servers; - public ServerAdapter(Context context, ClickCallback click) { - this.context = context; + public ServerAdapter(ClickCallback click) { this.click = click; this.servers = new ArrayList<>(); } @@ -32,7 +27,7 @@ public class ServerAdapter extends RecyclerView.Adapter onClick()); itemView.setOnLongClickListener(v -> onLongClick()); diff --git a/app/src/main/java/com/cappielloantonio/play/adapter/SimilarTrackAdapter.java b/app/src/main/java/com/cappielloantonio/play/adapter/SimilarTrackAdapter.java index c5ba1293..0f7d2a42 100644 --- a/app/src/main/java/com/cappielloantonio/play/adapter/SimilarTrackAdapter.java +++ b/app/src/main/java/com/cappielloantonio/play/adapter/SimilarTrackAdapter.java @@ -1,19 +1,15 @@ package com.cappielloantonio.play.adapter; -import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; -import android.view.View; import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.load.resource.bitmap.CenterCrop; import com.bumptech.glide.load.resource.bitmap.RoundedCorners; -import com.cappielloantonio.play.R; +import com.cappielloantonio.play.databinding.ItemHomeSimilarTrackBinding; import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.subsonic.models.Child; @@ -23,13 +19,11 @@ import java.util.Collections; import java.util.List; public class SimilarTrackAdapter extends RecyclerView.Adapter { - private final Context context; private final ClickCallback click; private List songs; - public SimilarTrackAdapter(Context context, ClickCallback click) { - this.context = context; + public SimilarTrackAdapter(ClickCallback click) { this.click = click; this.songs = Collections.emptyList(); } @@ -37,7 +31,7 @@ public class SimilarTrackAdapter extends RecyclerView.Adapter onClick()); itemView.setOnLongClickListener(v -> onLongClick()); diff --git a/app/src/main/java/com/cappielloantonio/play/adapter/SongHorizontalAdapter.java b/app/src/main/java/com/cappielloantonio/play/adapter/SongHorizontalAdapter.java index 9796218f..96580c1b 100644 --- a/app/src/main/java/com/cappielloantonio/play/adapter/SongHorizontalAdapter.java +++ b/app/src/main/java/com/cappielloantonio/play/adapter/SongHorizontalAdapter.java @@ -1,12 +1,9 @@ package com.cappielloantonio.play.adapter; -import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; import androidx.annotation.NonNull; import androidx.media3.common.util.UnstableApi; @@ -15,6 +12,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.load.resource.bitmap.CenterCrop; import com.bumptech.glide.load.resource.bitmap.RoundedCorners; import com.cappielloantonio.play.R; +import com.cappielloantonio.play.databinding.ItemHorizontalTrackBinding; import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.subsonic.models.Child; @@ -28,14 +26,12 @@ import java.util.List; @UnstableApi public class SongHorizontalAdapter extends RecyclerView.Adapter { - private final Context context; private final ClickCallback click; private final boolean isCoverVisible; private List songs; - public SongHorizontalAdapter(Context context, ClickCallback click, boolean isCoverVisible) { - this.context = context; + public SongHorizontalAdapter(ClickCallback click, boolean isCoverVisible) { this.click = click; this.isCoverVisible = isCoverVisible; this.songs = Collections.emptyList(); @@ -44,7 +40,7 @@ public class SongHorizontalAdapter extends RecyclerView.Adapter 0 && songs.get(position - 1) != null && songs.get(position - 1).getDiscNumber() < songs.get(position).getDiscNumber())) { - holder.differentDiscDivider.setVisibility(View.VISIBLE); + holder.item.differentDiskDivider.setVisibility(View.VISIBLE); } } @@ -92,34 +88,20 @@ public class SongHorizontalAdapter extends RecyclerView.Adapter onClick()); itemView.setOnLongClickListener(v -> onLongClick()); - more.setOnClickListener(v -> onLongClick()); + item.searchResultSongMoreButton.setOnClickListener(v -> onLongClick()); } public void onClick() { diff --git a/app/src/main/java/com/cappielloantonio/play/adapter/YearAdapter.java b/app/src/main/java/com/cappielloantonio/play/adapter/YearAdapter.java index 343117e6..17671e8d 100644 --- a/app/src/main/java/com/cappielloantonio/play/adapter/YearAdapter.java +++ b/app/src/main/java/com/cappielloantonio/play/adapter/YearAdapter.java @@ -1,16 +1,13 @@ package com.cappielloantonio.play.adapter; -import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; -import android.view.View; import android.view.ViewGroup; -import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; -import com.cappielloantonio.play.R; +import com.cappielloantonio.play.databinding.ItemHomeYearBinding; import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.model.Media; @@ -18,13 +15,11 @@ import java.util.Collections; import java.util.List; public class YearAdapter extends RecyclerView.Adapter { - private final Context context; private final ClickCallback click; private List years; - public YearAdapter(Context context, ClickCallback click) { - this.context = context; + public YearAdapter(ClickCallback click) { this.click = click; this.years = Collections.emptyList(); } @@ -32,7 +27,7 @@ public class YearAdapter extends RecyclerView.Adapter { @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - View view = LayoutInflater.from(context).inflate(R.layout.item_home_year, parent, false); + ItemHomeYearBinding view = ItemHomeYearBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); return new ViewHolder(view); } @@ -40,7 +35,7 @@ public class YearAdapter extends RecyclerView.Adapter { public void onBindViewHolder(ViewHolder holder, int position) { int year = years.get(position); - holder.textYear.setText(Integer.toString(year)); + holder.item.yearLabel.setText(Integer.toString(year)); } @Override @@ -58,12 +53,12 @@ public class YearAdapter extends RecyclerView.Adapter { } public class ViewHolder extends RecyclerView.ViewHolder { - TextView textYear; + ItemHomeYearBinding item; - ViewHolder(View itemView) { - super(itemView); + ViewHolder(ItemHomeYearBinding item) { + super(item.getRoot()); - textYear = itemView.findViewById(R.id.year_label); + this.item = item; itemView.setOnClickListener(v -> onClick()); } diff --git a/app/src/main/java/com/cappielloantonio/play/database/AppDatabase.java b/app/src/main/java/com/cappielloantonio/play/database/AppDatabase.java index 88ae0ad2..35d50d3f 100644 --- a/app/src/main/java/com/cappielloantonio/play/database/AppDatabase.java +++ b/app/src/main/java/com/cappielloantonio/play/database/AppDatabase.java @@ -1,13 +1,12 @@ package com.cappielloantonio.play.database; -import android.content.Context; - import androidx.room.AutoMigration; import androidx.room.Database; import androidx.room.Room; import androidx.room.RoomDatabase; import androidx.room.TypeConverters; +import com.cappielloantonio.play.App; import com.cappielloantonio.play.database.converter.DateConverters; import com.cappielloantonio.play.database.dao.ChronologyDao; import com.cappielloantonio.play.database.dao.DownloadDao; @@ -32,9 +31,9 @@ public abstract class AppDatabase extends RoomDatabase { private final static String DB_NAME = "play_db"; private static AppDatabase instance; - public static synchronized AppDatabase getInstance(Context context) { - if (instance == null && context != null) { - instance = Room.databaseBuilder(context, AppDatabase.class, DB_NAME) + public static synchronized AppDatabase getInstance() { + if (instance == null) { + instance = Room.databaseBuilder(App.getContext(), AppDatabase.class, DB_NAME) .fallbackToDestructiveMigration() .build(); } diff --git a/app/src/main/java/com/cappielloantonio/play/glide/CustomGlideRequest.java b/app/src/main/java/com/cappielloantonio/play/glide/CustomGlideRequest.java index d527214c..667b4553 100644 --- a/app/src/main/java/com/cappielloantonio/play/glide/CustomGlideRequest.java +++ b/app/src/main/java/com/cappielloantonio/play/glide/CustomGlideRequest.java @@ -40,8 +40,8 @@ public class CustomGlideRequest { } public static String createUrl(String item, int size) { - String url = App.getSubsonicClientInstance(App.getInstance(), false).getUrl(); - Map params = App.getSubsonicClientInstance(App.getInstance(), false).getParams(); + String url = App.getSubsonicClientInstance(false).getUrl(); + Map params = App.getSubsonicClientInstance(false).getParams(); url = url + "getCoverArt" + "?u=" + params.get("u") + diff --git a/app/src/main/java/com/cappielloantonio/play/repository/AlbumRepository.java b/app/src/main/java/com/cappielloantonio/play/repository/AlbumRepository.java index 6b05b543..91f84096 100644 --- a/app/src/main/java/com/cappielloantonio/play/repository/AlbumRepository.java +++ b/app/src/main/java/com/cappielloantonio/play/repository/AlbumRepository.java @@ -1,7 +1,5 @@ package com.cappielloantonio.play.repository; -import android.app.Application; - import androidx.annotation.NonNull; import androidx.lifecycle.MutableLiveData; @@ -11,7 +9,6 @@ import com.cappielloantonio.play.interfaces.MediaCallback; import com.cappielloantonio.play.subsonic.base.ApiResponse; import com.cappielloantonio.play.subsonic.models.AlbumID3; import com.cappielloantonio.play.subsonic.models.Child; -import com.cappielloantonio.play.subsonic.models.SubsonicResponse; import java.util.ArrayList; import java.util.Calendar; @@ -26,16 +23,10 @@ import retrofit2.Response; public class AlbumRepository { private static final String TAG = "AlbumRepository"; - private final Application application; - - public AlbumRepository(Application application) { - this.application = application; - } - public MutableLiveData> getAlbums(String type, int size, Integer fromYear, Integer toYear) { MutableLiveData> listLiveAlbums = new MutableLiveData<>(); - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getAlbumSongListClient() .getAlbumList2(type, size, 0, fromYear, toYear) .enqueue(new Callback() { @@ -58,7 +49,7 @@ public class AlbumRepository { public MutableLiveData> getStarredAlbums(boolean random, int size) { MutableLiveData> starredAlbums = new MutableLiveData<>(new ArrayList<>()); - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getAlbumSongListClient() .getStarred2() .enqueue(new Callback() { @@ -86,7 +77,7 @@ public class AlbumRepository { } public void star(String id) { - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getMediaAnnotationClient() .star(null, id, null) .enqueue(new Callback() { @@ -103,7 +94,7 @@ public class AlbumRepository { } public void unstar(String id) { - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getMediaAnnotationClient() .unstar(null, id, null) .enqueue(new Callback() { @@ -120,7 +111,7 @@ public class AlbumRepository { } public void setRating(String id, int rating) { - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getMediaAnnotationClient() .setRating(id, rating) .enqueue(new Callback() { @@ -139,7 +130,7 @@ public class AlbumRepository { public MutableLiveData> getAlbumTracks(String id) { MutableLiveData> albumTracks = new MutableLiveData<>(); - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getBrowsingClient() .getAlbum(id) .enqueue(new Callback() { @@ -166,7 +157,7 @@ public class AlbumRepository { public MutableLiveData> getArtistAlbums(String id) { MutableLiveData> artistsAlbum = new MutableLiveData<>(new ArrayList<>()); - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getBrowsingClient() .getArtist(id) .enqueue(new Callback() { @@ -191,7 +182,7 @@ public class AlbumRepository { public MutableLiveData getAlbum(String id) { MutableLiveData album = new MutableLiveData<>(); - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getBrowsingClient() .getAlbum(id) .enqueue(new Callback() { @@ -212,7 +203,7 @@ public class AlbumRepository { } public void getInstantMix(AlbumID3 album, int count, MediaCallback callback) { - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getBrowsingClient() .getSimilarSongs2(album.getId(), count) .enqueue(new Callback() { @@ -257,7 +248,7 @@ public class AlbumRepository { } private void getFirstAlbum(DecadesCallback callback) { - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getAlbumSongListClient() .getAlbumList2("byYear", 1, 0, 1900, Calendar.getInstance().get(Calendar.YEAR)) .enqueue(new Callback() { @@ -276,7 +267,7 @@ public class AlbumRepository { } private void getLastAlbum(DecadesCallback callback) { - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getAlbumSongListClient() .getAlbumList2("byYear", 1, 0, Calendar.getInstance().get(Calendar.YEAR), 1900) .enqueue(new Callback() { diff --git a/app/src/main/java/com/cappielloantonio/play/repository/ArtistRepository.java b/app/src/main/java/com/cappielloantonio/play/repository/ArtistRepository.java index 191bb350..7caf173c 100644 --- a/app/src/main/java/com/cappielloantonio/play/repository/ArtistRepository.java +++ b/app/src/main/java/com/cappielloantonio/play/repository/ArtistRepository.java @@ -1,7 +1,5 @@ package com.cappielloantonio.play.repository; -import android.app.Application; - import androidx.annotation.NonNull; import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.MutableLiveData; @@ -23,16 +21,10 @@ import retrofit2.Callback; import retrofit2.Response; public class ArtistRepository { - private final Application application; - - public ArtistRepository(Application application) { - this.application = application; - } - public MutableLiveData> getStarredArtists(boolean random, int size) { MutableLiveData> starredArtists = new MutableLiveData<>(); - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getAlbumSongListClient() .getStarred2() .enqueue(new Callback() { @@ -62,7 +54,7 @@ public class ArtistRepository { public MutableLiveData> getArtists(boolean random, int size) { MutableLiveData> listLiveArtists = new MutableLiveData<>(); - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getBrowsingClient() .getArtists() .enqueue(new Callback() { @@ -101,7 +93,7 @@ public class ArtistRepository { list.setValue(liveArtists); for (ArtistID3 artist : artists) { - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getBrowsingClient() .getArtist(artist.getId()) .enqueue(new Callback() { @@ -123,7 +115,7 @@ public class ArtistRepository { public MutableLiveData getArtistInfo(String id) { MutableLiveData artist = new MutableLiveData<>(); - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getBrowsingClient() .getArtist(id) .enqueue(new Callback() { @@ -149,7 +141,7 @@ public class ArtistRepository { public MutableLiveData getArtistFullInfo(String id) { MutableLiveData artistFullInfo = new MutableLiveData<>(); - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getBrowsingClient() .getArtistInfo2(id) .enqueue(new Callback() { @@ -170,7 +162,7 @@ public class ArtistRepository { } public void star(String id) { - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getMediaAnnotationClient() .star(null, null, id) .enqueue(new Callback() { @@ -187,7 +179,7 @@ public class ArtistRepository { } public void unstar(String id) { - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getMediaAnnotationClient() .unstar(null, null, id) .enqueue(new Callback() { @@ -204,7 +196,7 @@ public class ArtistRepository { } public void setRating(String id, int rating) { - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getMediaAnnotationClient() .setRating(id, rating) .enqueue(new Callback() { @@ -223,7 +215,7 @@ public class ArtistRepository { public MutableLiveData getArtist(String id) { MutableLiveData artist = new MutableLiveData<>(); - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getBrowsingClient() .getArtist(id) .enqueue(new Callback() { @@ -246,7 +238,7 @@ public class ArtistRepository { public MutableLiveData> getInstantMix(ArtistID3 artist, int count) { MutableLiveData> instantMix = new MutableLiveData<>(); - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getBrowsingClient() .getSimilarSongs2(artist.getId(), count) .enqueue(new Callback() { @@ -269,7 +261,7 @@ public class ArtistRepository { public MutableLiveData> getArtistRandomSong(LifecycleOwner owner, ArtistID3 artist, int count) { MutableLiveData> randomSongs = new MutableLiveData<>(); - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getBrowsingClient() .getArtist(artist.getId()) .enqueue(new Callback() { @@ -279,7 +271,7 @@ public class ArtistRepository { List albums = response.body().getSubsonicResponse().getArtist().getAlbums(); if (albums.size() > 0) { - AlbumRepository albumRepository = new AlbumRepository(App.getInstance()); + AlbumRepository albumRepository = new AlbumRepository(); for (int index = 0; index < albums.size(); index++) { albumRepository.getAlbumTracks(albums.get(index).getId()).observe(owner, songs -> { @@ -306,7 +298,7 @@ public class ArtistRepository { public MutableLiveData> getTopSongs(String artistName, int count) { MutableLiveData> topSongs = new MutableLiveData<>(new ArrayList<>()); - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getBrowsingClient() .getTopSongs(artistName, count) .enqueue(new Callback() { diff --git a/app/src/main/java/com/cappielloantonio/play/repository/ChronologyRepository.java b/app/src/main/java/com/cappielloantonio/play/repository/ChronologyRepository.java index afdfb341..94ca580f 100644 --- a/app/src/main/java/com/cappielloantonio/play/repository/ChronologyRepository.java +++ b/app/src/main/java/com/cappielloantonio/play/repository/ChronologyRepository.java @@ -1,7 +1,5 @@ package com.cappielloantonio.play.repository; -import android.app.Application; - import androidx.lifecycle.LiveData; import com.cappielloantonio.play.database.AppDatabase; @@ -12,14 +10,7 @@ import java.util.Calendar; import java.util.List; public class ChronologyRepository { - private static final String TAG = "ChronologyRepository"; - - private final ChronologyDao chronologyDao; - - public ChronologyRepository(Application application) { - AppDatabase database = AppDatabase.getInstance(application); - chronologyDao = database.chronologyDao(); - } + private final ChronologyDao chronologyDao = AppDatabase.getInstance().chronologyDao(); public LiveData> getThisWeek(String server) { Calendar calendar = Calendar.getInstance(); diff --git a/app/src/main/java/com/cappielloantonio/play/repository/DownloadRepository.java b/app/src/main/java/com/cappielloantonio/play/repository/DownloadRepository.java index 4344620f..5548d2d8 100644 --- a/app/src/main/java/com/cappielloantonio/play/repository/DownloadRepository.java +++ b/app/src/main/java/com/cappielloantonio/play/repository/DownloadRepository.java @@ -1,7 +1,5 @@ package com.cappielloantonio.play.repository; -import android.app.Application; - import androidx.lifecycle.LiveData; import com.cappielloantonio.play.database.AppDatabase; @@ -11,12 +9,7 @@ import com.cappielloantonio.play.model.Download; import java.util.List; public class DownloadRepository { - private final DownloadDao downloadDao; - - public DownloadRepository(Application application) { - AppDatabase database = AppDatabase.getInstance(application); - downloadDao = database.downloadDao(); - } + private final DownloadDao downloadDao = AppDatabase.getInstance().downloadDao(); public LiveData> getLiveDownload() { return downloadDao.getAll(); diff --git a/app/src/main/java/com/cappielloantonio/play/repository/GenreRepository.java b/app/src/main/java/com/cappielloantonio/play/repository/GenreRepository.java index e8799f1c..d69b5146 100644 --- a/app/src/main/java/com/cappielloantonio/play/repository/GenreRepository.java +++ b/app/src/main/java/com/cappielloantonio/play/repository/GenreRepository.java @@ -1,14 +1,11 @@ package com.cappielloantonio.play.repository; -import android.app.Application; - import androidx.annotation.NonNull; import androidx.lifecycle.MutableLiveData; import com.cappielloantonio.play.App; import com.cappielloantonio.play.subsonic.base.ApiResponse; import com.cappielloantonio.play.subsonic.models.Genre; -import com.cappielloantonio.play.subsonic.models.SubsonicResponse; import java.util.Collections; import java.util.List; @@ -18,18 +15,10 @@ import retrofit2.Callback; import retrofit2.Response; public class GenreRepository { - private static final String TAG = "GenreRepository"; - - private final Application application; - - public GenreRepository(Application application) { - this.application = application; - } - public MutableLiveData> getGenres(boolean random, int size) { MutableLiveData> genres = new MutableLiveData<>(); - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getBrowsingClient() .getGenres() .enqueue(new Callback() { diff --git a/app/src/main/java/com/cappielloantonio/play/repository/PlaylistRepository.java b/app/src/main/java/com/cappielloantonio/play/repository/PlaylistRepository.java index 585203d6..3f689b24 100644 --- a/app/src/main/java/com/cappielloantonio/play/repository/PlaylistRepository.java +++ b/app/src/main/java/com/cappielloantonio/play/repository/PlaylistRepository.java @@ -1,6 +1,5 @@ package com.cappielloantonio.play.repository; -import android.app.Application; import android.util.Log; import androidx.annotation.NonNull; @@ -23,20 +22,12 @@ import retrofit2.Callback; import retrofit2.Response; public class PlaylistRepository { - private final Application application; - private final PlaylistDao playlistDao; - - public PlaylistRepository(Application application) { - this.application = application; - - AppDatabase database = AppDatabase.getInstance(application); - this.playlistDao = database.playlistDao(); - } + private final PlaylistDao playlistDao = AppDatabase.getInstance().playlistDao(); public MutableLiveData> getPlaylists(boolean random, int size) { MutableLiveData> listLivePlaylists = new MutableLiveData<>(new ArrayList<>()); - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getPlaylistClient() .getPlaylists() .enqueue(new Callback() { @@ -65,7 +56,7 @@ public class PlaylistRepository { public MutableLiveData> getPlaylistSongs(String id) { MutableLiveData> listLivePlaylistSongs = new MutableLiveData<>(); - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getPlaylistClient() .getPlaylist(id) .enqueue(new Callback() { @@ -86,7 +77,7 @@ public class PlaylistRepository { } public void addSongToPlaylist(String playlistId, ArrayList songsId) { - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getPlaylistClient() .updatePlaylist(playlistId, null, true, songsId, null) .enqueue(new Callback() { @@ -103,7 +94,7 @@ public class PlaylistRepository { } public void createPlaylist(String playlistId, String name, ArrayList songsId) { - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getPlaylistClient() .createPlaylist(playlistId, name, songsId) .enqueue(new Callback() { @@ -120,7 +111,7 @@ public class PlaylistRepository { } public void updatePlaylist(String playlistId, String name, boolean isPublic, ArrayList songIdToAdd, ArrayList songIndexToRemove) { - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getPlaylistClient() .updatePlaylist(playlistId, name, isPublic, songIdToAdd, songIndexToRemove) .enqueue(new Callback() { @@ -137,7 +128,7 @@ public class PlaylistRepository { } public void deletePlaylist(String playlistId) { - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getPlaylistClient() .deletePlaylist(playlistId) .enqueue(new Callback() { diff --git a/app/src/main/java/com/cappielloantonio/play/repository/PodcastRepository.java b/app/src/main/java/com/cappielloantonio/play/repository/PodcastRepository.java index 82b0ca17..4fef493c 100644 --- a/app/src/main/java/com/cappielloantonio/play/repository/PodcastRepository.java +++ b/app/src/main/java/com/cappielloantonio/play/repository/PodcastRepository.java @@ -1,6 +1,5 @@ package com.cappielloantonio.play.repository; -import android.app.Application; import android.util.Log; import androidx.annotation.NonNull; @@ -10,7 +9,6 @@ import com.cappielloantonio.play.App; import com.cappielloantonio.play.subsonic.base.ApiResponse; import com.cappielloantonio.play.subsonic.models.PodcastChannel; import com.cappielloantonio.play.subsonic.models.PodcastEpisode; -import com.cappielloantonio.play.subsonic.models.SubsonicResponse; import java.util.List; @@ -19,18 +17,12 @@ import retrofit2.Callback; import retrofit2.Response; public class PodcastRepository { - private static final String TAG = "SongRepository"; - - private final Application application; - - public PodcastRepository(Application application) { - this.application = application; - } + private static final String TAG = "PodcastRepository"; public MutableLiveData> getPodcastChannels(boolean includeEpisodes, String channelId) { MutableLiveData> livePodcastChannel = new MutableLiveData<>(); - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getPodcastClient() .getPodcasts(includeEpisodes, channelId) .enqueue(new Callback() { @@ -53,7 +45,7 @@ public class PodcastRepository { public MutableLiveData> getNewestPodcastEpisodes(int count) { MutableLiveData> liveNewestPodcastEpisodes = new MutableLiveData<>(); - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getPodcastClient() .getNewestPodcasts(count) .enqueue(new Callback() { @@ -74,7 +66,7 @@ public class PodcastRepository { } public void refreshPodcasts() { - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getPodcastClient() .refreshPodcasts() .enqueue(new Callback() { diff --git a/app/src/main/java/com/cappielloantonio/play/repository/QueueRepository.java b/app/src/main/java/com/cappielloantonio/play/repository/QueueRepository.java index 6d1a7340..79172dca 100644 --- a/app/src/main/java/com/cappielloantonio/play/repository/QueueRepository.java +++ b/app/src/main/java/com/cappielloantonio/play/repository/QueueRepository.java @@ -1,7 +1,5 @@ package com.cappielloantonio.play.repository; -import android.app.Application; - import androidx.lifecycle.LiveData; import androidx.media3.common.MediaItem; @@ -18,12 +16,7 @@ import java.util.stream.Collectors; public class QueueRepository { private static final String TAG = "QueueRepository"; - private final QueueDao queueDao; - - public QueueRepository(Application application) { - AppDatabase database = AppDatabase.getInstance(application); - queueDao = database.queueDao(); - } + private final QueueDao queueDao = AppDatabase.getInstance().queueDao(); public LiveData> getLiveQueue() { return queueDao.getAll(); @@ -205,11 +198,7 @@ public class QueueRepository { if (mediaItem.mediaId.equals(lastMediaPlayed.getId())) { - if (System.currentTimeMillis() > lastMediaPlayed.getLastPlay() + lastMediaPlayed.getDuration() * 1000) { - isPlausible = true; - } else { - isPlausible = false; - } + isPlausible = System.currentTimeMillis() > lastMediaPlayed.getLastPlay() + lastMediaPlayed.getDuration() * 1000; } } catch (InterruptedException e) { e.printStackTrace(); diff --git a/app/src/main/java/com/cappielloantonio/play/repository/ScanRepository.java b/app/src/main/java/com/cappielloantonio/play/repository/ScanRepository.java index dca9611e..2494566e 100644 --- a/app/src/main/java/com/cappielloantonio/play/repository/ScanRepository.java +++ b/app/src/main/java/com/cappielloantonio/play/repository/ScanRepository.java @@ -1,28 +1,17 @@ package com.cappielloantonio.play.repository; -import android.app.Application; - import androidx.annotation.NonNull; import com.cappielloantonio.play.App; import com.cappielloantonio.play.interfaces.ScanCallback; import com.cappielloantonio.play.subsonic.base.ApiResponse; -import com.cappielloantonio.play.subsonic.models.SubsonicResponse; import retrofit2.Call; import retrofit2.Callback; public class ScanRepository { - private static final String TAG = "SongRepository"; - - private final Application application; - - public ScanRepository(Application application) { - this.application = application; - } - public void startScan(ScanCallback callback) { - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getMediaLibraryScanningClient() .startScan() .enqueue(new Callback() { @@ -41,7 +30,7 @@ public class ScanRepository { } public void getScanStatus(ScanCallback callback) { - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getMediaLibraryScanningClient() .startScan() .enqueue(new Callback() { diff --git a/app/src/main/java/com/cappielloantonio/play/repository/SearchingRepository.java b/app/src/main/java/com/cappielloantonio/play/repository/SearchingRepository.java index f19ba65e..68c4319b 100644 --- a/app/src/main/java/com/cappielloantonio/play/repository/SearchingRepository.java +++ b/app/src/main/java/com/cappielloantonio/play/repository/SearchingRepository.java @@ -1,7 +1,5 @@ package com.cappielloantonio.play.repository; -import android.app.Application; - import androidx.annotation.NonNull; import androidx.lifecycle.MutableLiveData; @@ -14,7 +12,6 @@ import com.cappielloantonio.play.subsonic.models.AlbumID3; import com.cappielloantonio.play.subsonic.models.ArtistID3; import com.cappielloantonio.play.subsonic.models.Child; import com.cappielloantonio.play.subsonic.models.SearchResult3; -import com.cappielloantonio.play.subsonic.models.SubsonicResponse; import java.util.ArrayList; import java.util.LinkedHashSet; @@ -25,20 +22,12 @@ import retrofit2.Callback; import retrofit2.Response; public class SearchingRepository { - private final RecentSearchDao recentSearchDao; - private final Application application; - - public SearchingRepository(Application application) { - this.application = application; - - AppDatabase database = AppDatabase.getInstance(application); - recentSearchDao = database.recentSearchDao(); - } + private final RecentSearchDao recentSearchDao = AppDatabase.getInstance().recentSearchDao(); public MutableLiveData search(String query) { MutableLiveData result = new MutableLiveData<>(); - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getSearchingClient() .search3(query, 20, 20, 20) .enqueue(new Callback() { @@ -59,7 +48,7 @@ public class SearchingRepository { public MutableLiveData> getSuggestions(String query) { MutableLiveData> suggestions = new MutableLiveData<>(); - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getSearchingClient() .search3(query, 5, 5, 5) .enqueue(new Callback() { @@ -68,19 +57,19 @@ public class SearchingRepository { List newSuggestions = new ArrayList(); if (response.isSuccessful() && response.body() != null) { - if(response.body().getSubsonicResponse().getSearchResult3().getArtists() != null) { + if (response.body().getSubsonicResponse().getSearchResult3().getArtists() != null) { for (ArtistID3 artistID3 : response.body().getSubsonicResponse().getSearchResult3().getArtists()) { newSuggestions.add(artistID3.getName()); } } - if(response.body().getSubsonicResponse().getSearchResult3().getAlbums() != null) { + if (response.body().getSubsonicResponse().getSearchResult3().getAlbums() != null) { for (AlbumID3 albumID3 : response.body().getSubsonicResponse().getSearchResult3().getAlbums()) { newSuggestions.add(albumID3.getName()); } } - if(response.body().getSubsonicResponse().getSearchResult3().getSongs() != null) { + if (response.body().getSubsonicResponse().getSearchResult3().getSongs() != null) { for (Child song : response.body().getSubsonicResponse().getSearchResult3().getSongs()) { newSuggestions.add(song.getTitle()); } diff --git a/app/src/main/java/com/cappielloantonio/play/repository/ServerRepository.java b/app/src/main/java/com/cappielloantonio/play/repository/ServerRepository.java index 72a7c6c9..8c1cb265 100644 --- a/app/src/main/java/com/cappielloantonio/play/repository/ServerRepository.java +++ b/app/src/main/java/com/cappielloantonio/play/repository/ServerRepository.java @@ -1,7 +1,5 @@ package com.cappielloantonio.play.repository; -import android.app.Application; - import androidx.lifecycle.LiveData; import com.cappielloantonio.play.database.AppDatabase; @@ -13,12 +11,7 @@ import java.util.List; public class ServerRepository { private static final String TAG = "QueueRepository"; - private final ServerDao serverDao; - - public ServerRepository(Application application) { - AppDatabase database = AppDatabase.getInstance(application); - serverDao = database.serverDao(); - } + private final ServerDao serverDao = AppDatabase.getInstance().serverDao(); public LiveData> getLiveServer() { return serverDao.getAll(); diff --git a/app/src/main/java/com/cappielloantonio/play/repository/SongRepository.java b/app/src/main/java/com/cappielloantonio/play/repository/SongRepository.java index 1aaffed4..139167fc 100644 --- a/app/src/main/java/com/cappielloantonio/play/repository/SongRepository.java +++ b/app/src/main/java/com/cappielloantonio/play/repository/SongRepository.java @@ -1,6 +1,5 @@ package com.cappielloantonio.play.repository; -import android.app.Application; import android.util.Log; import androidx.annotation.NonNull; @@ -11,13 +10,10 @@ import com.cappielloantonio.play.subsonic.base.ApiResponse; import com.cappielloantonio.play.subsonic.models.Child; import java.util.ArrayList; -import java.util.Collection; import java.util.Collections; import java.util.LinkedHashSet; import java.util.List; -import java.util.stream.Collectors; -import kotlin.collections.EmptyList; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; @@ -25,16 +21,10 @@ import retrofit2.Response; public class SongRepository { private static final String TAG = "SongRepository"; - private final Application application; - - public SongRepository(Application application) { - this.application = application; - } - public MutableLiveData> getStarredSongs(boolean random, int size) { MutableLiveData> starredSongs = new MutableLiveData<>(Collections.EMPTY_LIST); - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getAlbumSongListClient() .getStarred2() .enqueue(new Callback() { @@ -66,7 +56,7 @@ public class SongRepository { public MutableLiveData> getInstantMix(Child song, int count) { MutableLiveData> instantMix = new MutableLiveData<>(); - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getBrowsingClient() .getSimilarSongs2(song.getId(), count) .enqueue(new Callback() { @@ -89,7 +79,7 @@ public class SongRepository { public MutableLiveData> getRandomSample(int number, Integer fromYear, Integer toYear) { MutableLiveData> randomSongsSample = new MutableLiveData<>(); - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getAlbumSongListClient() .getRandomSongs(number, fromYear, toYear) .enqueue(new Callback() { @@ -114,7 +104,7 @@ public class SongRepository { } public void scrobble(String id) { - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getMediaAnnotationClient() .scrobble(id) .enqueue(new Callback() { @@ -131,7 +121,7 @@ public class SongRepository { } public void star(String id) { - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getMediaAnnotationClient() .star(id, null, null) .enqueue(new Callback() { @@ -148,7 +138,7 @@ public class SongRepository { } public void unstar(String id) { - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getMediaAnnotationClient() .unstar(id, null, null) .enqueue(new Callback() { @@ -165,7 +155,7 @@ public class SongRepository { } public void setRating(String id, int rating) { - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getMediaAnnotationClient() .setRating(id, rating) .enqueue(new Callback() { @@ -184,7 +174,7 @@ public class SongRepository { public MutableLiveData> getSongsByGenre(String id) { MutableLiveData> songsByGenre = new MutableLiveData<>(); - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getAlbumSongListClient() .getSongsByGenre(id, 500, 0) .enqueue(new Callback() { @@ -218,7 +208,7 @@ public class SongRepository { MutableLiveData> songsByGenre = new MutableLiveData<>(); for (String id : genresId) - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getAlbumSongListClient() .getSongsByGenre(id, 500, 0) .enqueue(new Callback() { @@ -245,7 +235,7 @@ public class SongRepository { public MutableLiveData getSong(String id) { MutableLiveData song = new MutableLiveData<>(); - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getBrowsingClient() .getSong(id) .enqueue(new Callback() { @@ -268,7 +258,7 @@ public class SongRepository { public MutableLiveData getSongLyrics(Child song) { MutableLiveData lyrics = new MutableLiveData<>(null); - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getMediaRetrievalClient() .getLyrics(song.getArtist(), song.getTitle()) .enqueue(new Callback() { diff --git a/app/src/main/java/com/cappielloantonio/play/repository/SystemRepository.java b/app/src/main/java/com/cappielloantonio/play/repository/SystemRepository.java index f0abb1e2..b66c05b7 100644 --- a/app/src/main/java/com/cappielloantonio/play/repository/SystemRepository.java +++ b/app/src/main/java/com/cappielloantonio/play/repository/SystemRepository.java @@ -1,7 +1,5 @@ package com.cappielloantonio.play.repository; -import android.app.Application; - import androidx.annotation.NonNull; import androidx.lifecycle.MutableLiveData; @@ -9,23 +7,14 @@ import com.cappielloantonio.play.App; import com.cappielloantonio.play.interfaces.SystemCallback; import com.cappielloantonio.play.subsonic.base.ApiResponse; import com.cappielloantonio.play.subsonic.models.ResponseStatus; -import com.cappielloantonio.play.subsonic.models.SubsonicResponse; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; public class SystemRepository { - private static final String TAG = "SongRepository"; - - private final Application application; - - public SystemRepository(Application application) { - this.application = application; - } - public void checkUserCredential(SystemCallback callback) { - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getSystemClient() .ping() .enqueue(new Callback() { @@ -57,7 +46,7 @@ public class SystemRepository { public MutableLiveData ping() { MutableLiveData pingResult = new MutableLiveData<>(); - App.getSubsonicClientInstance(application, false) + App.getSubsonicClientInstance(false) .getSystemClient() .ping() .enqueue(new Callback() { diff --git a/app/src/main/java/com/cappielloantonio/play/service/DownloaderManager.java b/app/src/main/java/com/cappielloantonio/play/service/DownloaderManager.java index faa3bed0..bb5e88a4 100644 --- a/app/src/main/java/com/cappielloantonio/play/service/DownloaderManager.java +++ b/app/src/main/java/com/cappielloantonio/play/service/DownloaderManager.java @@ -19,7 +19,6 @@ import androidx.media3.exoplayer.offline.DownloadManager; import androidx.media3.exoplayer.offline.DownloadRequest; import androidx.media3.exoplayer.offline.DownloadService; -import com.cappielloantonio.play.App; import com.cappielloantonio.play.repository.DownloadRepository; import com.cappielloantonio.play.util.DownloadUtil; @@ -110,7 +109,7 @@ public class DownloaderManager { } private static DownloadRepository getDownloadRepository() { - return new DownloadRepository(App.getInstance()); + return new DownloadRepository(); } private static void downloadDatabase(com.cappielloantonio.play.model.Download download) { diff --git a/app/src/main/java/com/cappielloantonio/play/service/MediaManager.java b/app/src/main/java/com/cappielloantonio/play/service/MediaManager.java index 5b3c7aca..ff1f7710 100644 --- a/app/src/main/java/com/cappielloantonio/play/service/MediaManager.java +++ b/app/src/main/java/com/cappielloantonio/play/service/MediaManager.java @@ -5,7 +5,6 @@ import android.content.Context; import androidx.media3.common.MediaItem; import androidx.media3.session.MediaBrowser; -import com.cappielloantonio.play.App; import com.cappielloantonio.play.interfaces.MediaIndexCallback; import com.cappielloantonio.play.model.Chronology; import com.cappielloantonio.play.repository.ChronologyRepository; @@ -83,7 +82,7 @@ public class MediaManager { try { if (mediaBrowserListenableFuture.isDone()) { mediaBrowserListenableFuture.get().clearMediaItems(); - mediaBrowserListenableFuture.get().setMediaItems(MappingUtil.mapMediaItems(context, media, true)); + mediaBrowserListenableFuture.get().setMediaItems(MappingUtil.mapMediaItems(media, true)); mediaBrowserListenableFuture.get().seekTo(getQueueRepository().getLastPlayedMediaIndex(), getQueueRepository().getLastPlayedMediaTimestamp()); mediaBrowserListenableFuture.get().prepare(); } @@ -170,7 +169,7 @@ public class MediaManager { try { if (mediaBrowserListenableFuture.isDone()) { mediaBrowserListenableFuture.get().clearMediaItems(); - mediaBrowserListenableFuture.get().setMediaItems(MappingUtil.mapMediaItems(context, media, true)); + mediaBrowserListenableFuture.get().setMediaItems(MappingUtil.mapMediaItems(media, true)); mediaBrowserListenableFuture.get().prepare(); mediaBrowserListenableFuture.get().seekTo(startIndex, 0); mediaBrowserListenableFuture.get().play(); @@ -189,7 +188,7 @@ public class MediaManager { try { if (mediaBrowserListenableFuture.isDone()) { mediaBrowserListenableFuture.get().clearMediaItems(); - mediaBrowserListenableFuture.get().setMediaItem(MappingUtil.mapMediaItem(context, media, true)); + mediaBrowserListenableFuture.get().setMediaItem(MappingUtil.mapMediaItem(media, true)); mediaBrowserListenableFuture.get().prepare(); mediaBrowserListenableFuture.get().play(); enqueueDatabase(media, true, 0); @@ -208,10 +207,10 @@ public class MediaManager { if (mediaBrowserListenableFuture.isDone()) { if (playImmediatelyAfter && mediaBrowserListenableFuture.get().getNextMediaItemIndex() != -1) { enqueueDatabase(media, false, mediaBrowserListenableFuture.get().getNextMediaItemIndex()); - mediaBrowserListenableFuture.get().addMediaItems(mediaBrowserListenableFuture.get().getNextMediaItemIndex(), MappingUtil.mapMediaItems(context, media, true)); + mediaBrowserListenableFuture.get().addMediaItems(mediaBrowserListenableFuture.get().getNextMediaItemIndex(), MappingUtil.mapMediaItems(media, true)); } else { enqueueDatabase(media, false, mediaBrowserListenableFuture.get().getMediaItemCount()); - mediaBrowserListenableFuture.get().addMediaItems(MappingUtil.mapMediaItems(context, media, true)); + mediaBrowserListenableFuture.get().addMediaItems(MappingUtil.mapMediaItems(media, true)); } } } catch (ExecutionException | InterruptedException e) { @@ -228,10 +227,10 @@ public class MediaManager { if (mediaBrowserListenableFuture.isDone()) { if (playImmediatelyAfter && mediaBrowserListenableFuture.get().getNextMediaItemIndex() != -1) { enqueueDatabase(media, false, mediaBrowserListenableFuture.get().getNextMediaItemIndex()); - mediaBrowserListenableFuture.get().addMediaItem(mediaBrowserListenableFuture.get().getNextMediaItemIndex(), MappingUtil.mapMediaItem(context, media, true)); + mediaBrowserListenableFuture.get().addMediaItem(mediaBrowserListenableFuture.get().getNextMediaItemIndex(), MappingUtil.mapMediaItem(media, true)); } else { enqueueDatabase(media, false, mediaBrowserListenableFuture.get().getMediaItemCount()); - mediaBrowserListenableFuture.get().addMediaItem(MappingUtil.mapMediaItem(context, media, true)); + mediaBrowserListenableFuture.get().addMediaItem(MappingUtil.mapMediaItem(media, true)); } } } catch (ExecutionException | InterruptedException e) { @@ -311,15 +310,15 @@ public class MediaManager { } private static QueueRepository getQueueRepository() { - return new QueueRepository(App.getInstance()); + return new QueueRepository(); } private static SongRepository getSongRepository() { - return new SongRepository(App.getInstance()); + return new SongRepository(); } private static ChronologyRepository getChronologyRepository() { - return new ChronologyRepository(App.getInstance()); + return new ChronologyRepository(); } private static void enqueueDatabase(List media, boolean reset, int afterIndex) { diff --git a/app/src/main/java/com/cappielloantonio/play/subsonic/Subsonic.java b/app/src/main/java/com/cappielloantonio/play/subsonic/Subsonic.java index 4785444b..1d6e8477 100644 --- a/app/src/main/java/com/cappielloantonio/play/subsonic/Subsonic.java +++ b/app/src/main/java/com/cappielloantonio/play/subsonic/Subsonic.java @@ -1,7 +1,5 @@ package com.cappielloantonio.play.subsonic; -import android.content.Context; - import com.cappielloantonio.play.subsonic.api.albumsonglist.AlbumSongListClient; import com.cappielloantonio.play.subsonic.api.browsing.BrowsingClient; import com.cappielloantonio.play.subsonic.api.mediaannotation.MediaAnnotationClient; @@ -19,8 +17,6 @@ import java.util.Map; public class Subsonic { private static final Version API_MAX_VERSION = Version.of("1.15.0"); - private final Context context; - private final Version apiVersion = API_MAX_VERSION; private final SubsonicPreferences preferences; @@ -34,8 +30,7 @@ public class Subsonic { private PodcastClient podcastClient; private MediaLibraryScanningClient mediaLibraryScanningClient; - public Subsonic(Context context, SubsonicPreferences preferences) { - this.context = context; + public Subsonic(SubsonicPreferences preferences) { this.preferences = preferences; } @@ -45,63 +40,63 @@ public class Subsonic { public SystemClient getSystemClient() { if (systemClient == null) { - systemClient = new SystemClient(context, this); + systemClient = new SystemClient(this); } return systemClient; } public BrowsingClient getBrowsingClient() { if (browsingClient == null) { - browsingClient = new BrowsingClient(context, this); + browsingClient = new BrowsingClient(this); } return browsingClient; } public MediaRetrievalClient getMediaRetrievalClient() { if (mediaRetrievalClient == null) { - mediaRetrievalClient = new MediaRetrievalClient(context, this); + mediaRetrievalClient = new MediaRetrievalClient(this); } return mediaRetrievalClient; } public PlaylistClient getPlaylistClient() { if (playlistClient == null) { - playlistClient = new PlaylistClient(context, this); + playlistClient = new PlaylistClient(this); } return playlistClient; } public SearchingClient getSearchingClient() { if (searchingClient == null) { - searchingClient = new SearchingClient(context, this); + searchingClient = new SearchingClient(this); } return searchingClient; } public AlbumSongListClient getAlbumSongListClient() { if (albumSongListClient == null) { - albumSongListClient = new AlbumSongListClient(context, this); + albumSongListClient = new AlbumSongListClient(this); } return albumSongListClient; } public MediaAnnotationClient getMediaAnnotationClient() { if (mediaAnnotationClient == null) { - mediaAnnotationClient = new MediaAnnotationClient(context, this); + mediaAnnotationClient = new MediaAnnotationClient(this); } return mediaAnnotationClient; } public PodcastClient getPodcastClient() { if (podcastClient == null) { - podcastClient = new PodcastClient(context, this); + podcastClient = new PodcastClient(this); } return podcastClient; } public MediaLibraryScanningClient getMediaLibraryScanningClient() { if (mediaLibraryScanningClient == null) { - mediaLibraryScanningClient = new MediaLibraryScanningClient(context, this); + mediaLibraryScanningClient = new MediaLibraryScanningClient(this); } return mediaLibraryScanningClient; } diff --git a/app/src/main/java/com/cappielloantonio/play/subsonic/api/albumsonglist/AlbumSongListClient.java b/app/src/main/java/com/cappielloantonio/play/subsonic/api/albumsonglist/AlbumSongListClient.java index 739d6da4..aa9857cc 100644 --- a/app/src/main/java/com/cappielloantonio/play/subsonic/api/albumsonglist/AlbumSongListClient.java +++ b/app/src/main/java/com/cappielloantonio/play/subsonic/api/albumsonglist/AlbumSongListClient.java @@ -1,11 +1,10 @@ package com.cappielloantonio.play.subsonic.api.albumsonglist; -import android.content.Context; import android.util.Log; +import com.cappielloantonio.play.App; import com.cappielloantonio.play.subsonic.Subsonic; import com.cappielloantonio.play.subsonic.base.ApiResponse; -import com.cappielloantonio.play.subsonic.models.SubsonicResponse; import com.cappielloantonio.play.subsonic.utils.CacheUtil; import com.google.gson.GsonBuilder; @@ -21,12 +20,10 @@ import retrofit2.converter.gson.GsonConverterFactory; public class AlbumSongListClient { private static final String TAG = "BrowsingClient"; - private final Context context; private final Subsonic subsonic; private final AlbumSongListService albumSongListService; - public AlbumSongListClient(Context context, Subsonic subsonic) { - this.context = context; + public AlbumSongListClient(Subsonic subsonic) { this.subsonic = subsonic; Retrofit retrofit = new Retrofit.Builder() @@ -74,7 +71,7 @@ public class AlbumSongListClient { } private OkHttpClient getOkHttpClient() { - CacheUtil cacheUtil = new CacheUtil(context, 60, 60 * 60 * 24 * 30); + CacheUtil cacheUtil = new CacheUtil(60, 60 * 60 * 24 * 30); return new OkHttpClient.Builder() .callTimeout(2, TimeUnit.MINUTES) @@ -101,6 +98,6 @@ public class AlbumSongListClient { private Cache getCache() { int cacheSize = 10 * 1024 * 1024; - return new Cache(context.getCacheDir(), cacheSize); + return new Cache(App.getContext().getCacheDir(), cacheSize); } } diff --git a/app/src/main/java/com/cappielloantonio/play/subsonic/api/browsing/BrowsingClient.java b/app/src/main/java/com/cappielloantonio/play/subsonic/api/browsing/BrowsingClient.java index e1095153..a7f5019a 100644 --- a/app/src/main/java/com/cappielloantonio/play/subsonic/api/browsing/BrowsingClient.java +++ b/app/src/main/java/com/cappielloantonio/play/subsonic/api/browsing/BrowsingClient.java @@ -1,11 +1,10 @@ package com.cappielloantonio.play.subsonic.api.browsing; -import android.content.Context; import android.util.Log; +import com.cappielloantonio.play.App; import com.cappielloantonio.play.subsonic.Subsonic; import com.cappielloantonio.play.subsonic.base.ApiResponse; -import com.cappielloantonio.play.subsonic.models.SubsonicResponse; import com.cappielloantonio.play.subsonic.utils.CacheUtil; import com.google.gson.GsonBuilder; @@ -21,12 +20,10 @@ import retrofit2.converter.gson.GsonConverterFactory; public class BrowsingClient { private static final String TAG = "BrowsingClient"; - private final Context context; private final Subsonic subsonic; private final BrowsingService browsingService; - public BrowsingClient(Context context, Subsonic subsonic) { - this.context = context; + public BrowsingClient(Subsonic subsonic) { this.subsonic = subsonic; Retrofit retrofit = new Retrofit.Builder() @@ -124,7 +121,7 @@ public class BrowsingClient { } private OkHttpClient getOkHttpClient() { - CacheUtil cacheUtil = new CacheUtil(context, 60, 60 * 60 * 24 * 30); + CacheUtil cacheUtil = new CacheUtil(60, 60 * 60 * 24 * 30); return new OkHttpClient.Builder() .callTimeout(2, TimeUnit.MINUTES) @@ -147,6 +144,6 @@ public class BrowsingClient { private Cache getCache() { int cacheSize = 10 * 1024 * 1024; - return context != null ? new Cache(context.getCacheDir(), cacheSize) : null; + return new Cache(App.getContext().getCacheDir(), cacheSize); } } diff --git a/app/src/main/java/com/cappielloantonio/play/subsonic/api/mediaannotation/MediaAnnotationClient.java b/app/src/main/java/com/cappielloantonio/play/subsonic/api/mediaannotation/MediaAnnotationClient.java index 1a277148..b79a88f2 100644 --- a/app/src/main/java/com/cappielloantonio/play/subsonic/api/mediaannotation/MediaAnnotationClient.java +++ b/app/src/main/java/com/cappielloantonio/play/subsonic/api/mediaannotation/MediaAnnotationClient.java @@ -1,11 +1,10 @@ package com.cappielloantonio.play.subsonic.api.mediaannotation; -import android.content.Context; import android.util.Log; +import com.cappielloantonio.play.App; import com.cappielloantonio.play.subsonic.Subsonic; import com.cappielloantonio.play.subsonic.base.ApiResponse; -import com.cappielloantonio.play.subsonic.models.SubsonicResponse; import com.cappielloantonio.play.subsonic.utils.CacheUtil; import com.google.gson.GsonBuilder; @@ -21,12 +20,10 @@ import retrofit2.converter.gson.GsonConverterFactory; public class MediaAnnotationClient { private static final String TAG = "BrowsingClient"; - private final Context context; private final Subsonic subsonic; private final MediaAnnotationService mediaAnnotationService; - public MediaAnnotationClient(Context context, Subsonic subsonic) { - this.context = context; + public MediaAnnotationClient(Subsonic subsonic) { this.subsonic = subsonic; Retrofit retrofit = new Retrofit.Builder() @@ -59,7 +56,7 @@ public class MediaAnnotationClient { } private OkHttpClient getOkHttpClient() { - CacheUtil cacheUtil = new CacheUtil(context, 0, 60 * 60 * 24 * 30); + CacheUtil cacheUtil = new CacheUtil(0, 60 * 60 * 24 * 30); return new OkHttpClient.Builder() .callTimeout(2, TimeUnit.MINUTES) @@ -81,6 +78,6 @@ public class MediaAnnotationClient { private Cache getCache() { int cacheSize = 10 * 1024 * 1024; - return context != null ? new Cache(context.getCacheDir(), cacheSize) : null; + return new Cache(App.getContext().getCacheDir(), cacheSize); } } diff --git a/app/src/main/java/com/cappielloantonio/play/subsonic/api/medialibraryscanning/MediaLibraryScanningClient.java b/app/src/main/java/com/cappielloantonio/play/subsonic/api/medialibraryscanning/MediaLibraryScanningClient.java index 3e24ed00..ad989645 100644 --- a/app/src/main/java/com/cappielloantonio/play/subsonic/api/medialibraryscanning/MediaLibraryScanningClient.java +++ b/app/src/main/java/com/cappielloantonio/play/subsonic/api/medialibraryscanning/MediaLibraryScanningClient.java @@ -1,11 +1,10 @@ package com.cappielloantonio.play.subsonic.api.medialibraryscanning; -import android.content.Context; import android.util.Log; +import com.cappielloantonio.play.App; import com.cappielloantonio.play.subsonic.Subsonic; import com.cappielloantonio.play.subsonic.base.ApiResponse; -import com.cappielloantonio.play.subsonic.models.SubsonicResponse; import com.cappielloantonio.play.subsonic.utils.CacheUtil; import com.google.gson.GsonBuilder; @@ -21,12 +20,10 @@ import retrofit2.converter.gson.GsonConverterFactory; public class MediaLibraryScanningClient { private static final String TAG = "SystemClient"; - private final Context context; private final Subsonic subsonic; private final MediaLibraryScanningService mediaLibraryScanningService; - public MediaLibraryScanningClient(Context context, Subsonic subsonic) { - this.context = context; + public MediaLibraryScanningClient(Subsonic subsonic) { this.subsonic = subsonic; Retrofit retrofit = new Retrofit.Builder() @@ -49,7 +46,7 @@ public class MediaLibraryScanningClient { } private OkHttpClient getOkHttpClient() { - CacheUtil cacheUtil = new CacheUtil(context, 0, 60 * 60 * 24 * 30); + CacheUtil cacheUtil = new CacheUtil(0, 60 * 60 * 24 * 30); return new OkHttpClient.Builder() .callTimeout(2, TimeUnit.MINUTES) @@ -71,6 +68,6 @@ public class MediaLibraryScanningClient { private Cache getCache() { int cacheSize = 10 * 1024 * 1024; - return context != null ? new Cache(context.getCacheDir(), cacheSize) : null; + return new Cache(App.getContext().getCacheDir(), cacheSize); } } diff --git a/app/src/main/java/com/cappielloantonio/play/subsonic/api/mediaretrieval/MediaRetrievalClient.java b/app/src/main/java/com/cappielloantonio/play/subsonic/api/mediaretrieval/MediaRetrievalClient.java index 1886e01c..cf980c70 100644 --- a/app/src/main/java/com/cappielloantonio/play/subsonic/api/mediaretrieval/MediaRetrievalClient.java +++ b/app/src/main/java/com/cappielloantonio/play/subsonic/api/mediaretrieval/MediaRetrievalClient.java @@ -1,11 +1,10 @@ package com.cappielloantonio.play.subsonic.api.mediaretrieval; -import android.content.Context; import android.util.Log; +import com.cappielloantonio.play.App; import com.cappielloantonio.play.subsonic.Subsonic; import com.cappielloantonio.play.subsonic.base.ApiResponse; -import com.cappielloantonio.play.subsonic.models.SubsonicResponse; import com.cappielloantonio.play.subsonic.utils.CacheUtil; import com.google.gson.GsonBuilder; @@ -21,12 +20,10 @@ import retrofit2.converter.gson.GsonConverterFactory; public class MediaRetrievalClient { private static final String TAG = "BrowsingClient"; - private final Context context; private final Subsonic subsonic; private final MediaRetrievalService mediaRetrievalService; - public MediaRetrievalClient(Context context, Subsonic subsonic) { - this.context = context; + public MediaRetrievalClient(Subsonic subsonic) { this.subsonic = subsonic; Retrofit retrofit = new Retrofit.Builder() @@ -54,7 +51,7 @@ public class MediaRetrievalClient { } private OkHttpClient getOkHttpClient() { - CacheUtil cacheUtil = new CacheUtil(context, 0, 60 * 60 * 24 * 30); + CacheUtil cacheUtil = new CacheUtil(0, 60 * 60 * 24 * 30); return new OkHttpClient.Builder() .callTimeout(2, TimeUnit.MINUTES) @@ -77,6 +74,6 @@ public class MediaRetrievalClient { private Cache getCache() { int cacheSize = 10 * 1024 * 1024; - return context != null ? new Cache(context.getCacheDir(), cacheSize) : null; + return new Cache(App.getContext().getCacheDir(), cacheSize); } } diff --git a/app/src/main/java/com/cappielloantonio/play/subsonic/api/playlist/PlaylistClient.java b/app/src/main/java/com/cappielloantonio/play/subsonic/api/playlist/PlaylistClient.java index 15d25ba0..8023ac4e 100644 --- a/app/src/main/java/com/cappielloantonio/play/subsonic/api/playlist/PlaylistClient.java +++ b/app/src/main/java/com/cappielloantonio/play/subsonic/api/playlist/PlaylistClient.java @@ -1,11 +1,10 @@ package com.cappielloantonio.play.subsonic.api.playlist; -import android.content.Context; import android.util.Log; +import com.cappielloantonio.play.App; import com.cappielloantonio.play.subsonic.Subsonic; import com.cappielloantonio.play.subsonic.base.ApiResponse; -import com.cappielloantonio.play.subsonic.models.SubsonicResponse; import com.cappielloantonio.play.subsonic.utils.CacheUtil; import com.google.gson.GsonBuilder; @@ -22,12 +21,10 @@ import retrofit2.converter.gson.GsonConverterFactory; public class PlaylistClient { private static final String TAG = "BrowsingClient"; - private final Context context; private final Subsonic subsonic; private final PlaylistService playlistService; - public PlaylistClient(Context context, Subsonic subsonic) { - this.context = context; + public PlaylistClient(Subsonic subsonic) { this.subsonic = subsonic; Retrofit retrofit = new Retrofit.Builder() @@ -65,7 +62,7 @@ public class PlaylistClient { } private OkHttpClient getOkHttpClient() { - CacheUtil cacheUtil = new CacheUtil(context, 0, 60 * 60 * 24 * 30); + CacheUtil cacheUtil = new CacheUtil(0, 60 * 60 * 24 * 30); return new OkHttpClient.Builder() .callTimeout(2, TimeUnit.MINUTES) @@ -87,6 +84,6 @@ public class PlaylistClient { private Cache getCache() { int cacheSize = 10 * 1024 * 1024; - return context != null ? new Cache(context.getCacheDir(), cacheSize) : null; + return new Cache(App.getContext().getCacheDir(), cacheSize); } } diff --git a/app/src/main/java/com/cappielloantonio/play/subsonic/api/podcast/PodcastClient.java b/app/src/main/java/com/cappielloantonio/play/subsonic/api/podcast/PodcastClient.java index 13700b28..f1c3a174 100644 --- a/app/src/main/java/com/cappielloantonio/play/subsonic/api/podcast/PodcastClient.java +++ b/app/src/main/java/com/cappielloantonio/play/subsonic/api/podcast/PodcastClient.java @@ -1,11 +1,10 @@ package com.cappielloantonio.play.subsonic.api.podcast; -import android.content.Context; import android.util.Log; +import com.cappielloantonio.play.App; import com.cappielloantonio.play.subsonic.Subsonic; import com.cappielloantonio.play.subsonic.base.ApiResponse; -import com.cappielloantonio.play.subsonic.models.SubsonicResponse; import com.cappielloantonio.play.subsonic.utils.CacheUtil; import com.google.gson.GsonBuilder; @@ -21,12 +20,10 @@ import retrofit2.converter.gson.GsonConverterFactory; public class PodcastClient { private static final String TAG = "SystemClient"; - private final Context context; private final Subsonic subsonic; private final PodcastService podcastService; - public PodcastClient(Context context, Subsonic subsonic) { - this.context = context; + public PodcastClient(Subsonic subsonic) { this.subsonic = subsonic; Retrofit retrofit = new Retrofit.Builder() @@ -54,7 +51,7 @@ public class PodcastClient { } private OkHttpClient getOkHttpClient() { - CacheUtil cacheUtil = new CacheUtil(context, 60, 60 * 60 * 24 * 30); + CacheUtil cacheUtil = new CacheUtil(60, 60 * 60 * 24 * 30); return new OkHttpClient.Builder() .callTimeout(2, TimeUnit.MINUTES) @@ -77,6 +74,6 @@ public class PodcastClient { private Cache getCache() { int cacheSize = 10 * 1024 * 1024; - return context != null ? new Cache(context.getCacheDir(), cacheSize) : null; + return new Cache(App.getContext().getCacheDir(), cacheSize); } } diff --git a/app/src/main/java/com/cappielloantonio/play/subsonic/api/searching/SearchingClient.java b/app/src/main/java/com/cappielloantonio/play/subsonic/api/searching/SearchingClient.java index 5221ea46..4159d373 100644 --- a/app/src/main/java/com/cappielloantonio/play/subsonic/api/searching/SearchingClient.java +++ b/app/src/main/java/com/cappielloantonio/play/subsonic/api/searching/SearchingClient.java @@ -1,11 +1,10 @@ package com.cappielloantonio.play.subsonic.api.searching; -import android.content.Context; import android.util.Log; +import com.cappielloantonio.play.App; import com.cappielloantonio.play.subsonic.Subsonic; import com.cappielloantonio.play.subsonic.base.ApiResponse; -import com.cappielloantonio.play.subsonic.models.SubsonicResponse; import com.cappielloantonio.play.subsonic.utils.CacheUtil; import com.google.gson.GsonBuilder; @@ -21,12 +20,10 @@ import retrofit2.converter.gson.GsonConverterFactory; public class SearchingClient { private static final String TAG = "BrowsingClient"; - private final Context context; private final Subsonic subsonic; private final SearchingService searchingService; - public SearchingClient(Context context, Subsonic subsonic) { - this.context = context; + public SearchingClient(Subsonic subsonic) { this.subsonic = subsonic; Retrofit retrofit = new Retrofit.Builder() @@ -49,7 +46,7 @@ public class SearchingClient { } private OkHttpClient getOkHttpClient() { - CacheUtil cacheUtil = new CacheUtil(context, 60, 60 * 60 * 24 * 30); + CacheUtil cacheUtil = new CacheUtil(60, 60 * 60 * 24 * 30); return new OkHttpClient.Builder() .callTimeout(2, TimeUnit.MINUTES) @@ -72,6 +69,6 @@ public class SearchingClient { private Cache getCache() { int cacheSize = 10 * 1024 * 1024; - return context != null ? new Cache(context.getCacheDir(), cacheSize) : null; + return new Cache(App.getContext().getCacheDir(), cacheSize); } } diff --git a/app/src/main/java/com/cappielloantonio/play/subsonic/api/system/SystemClient.java b/app/src/main/java/com/cappielloantonio/play/subsonic/api/system/SystemClient.java index 2e58fddd..3949f585 100644 --- a/app/src/main/java/com/cappielloantonio/play/subsonic/api/system/SystemClient.java +++ b/app/src/main/java/com/cappielloantonio/play/subsonic/api/system/SystemClient.java @@ -1,11 +1,10 @@ package com.cappielloantonio.play.subsonic.api.system; -import android.content.Context; import android.util.Log; +import com.cappielloantonio.play.App; import com.cappielloantonio.play.subsonic.Subsonic; import com.cappielloantonio.play.subsonic.base.ApiResponse; -import com.cappielloantonio.play.subsonic.models.SubsonicResponse; import com.cappielloantonio.play.subsonic.utils.CacheUtil; import com.google.gson.GsonBuilder; @@ -21,12 +20,10 @@ import retrofit2.converter.gson.GsonConverterFactory; public class SystemClient { private static final String TAG = "SystemClient"; - private final Context context; private final Subsonic subsonic; private final SystemService systemService; - public SystemClient(Context context, Subsonic subsonic) { - this.context = context; + public SystemClient(Subsonic subsonic) { this.subsonic = subsonic; Retrofit retrofit = new Retrofit.Builder() @@ -49,7 +46,7 @@ public class SystemClient { } private OkHttpClient getOkHttpClient() { - CacheUtil cacheUtil = new CacheUtil(context, 0, 60 * 60 * 24 * 30); + CacheUtil cacheUtil = new CacheUtil(0, 60 * 60 * 24 * 30); return new OkHttpClient.Builder() .callTimeout(2, TimeUnit.MINUTES) @@ -72,6 +69,6 @@ public class SystemClient { private Cache getCache() { int cacheSize = 10 * 1024 * 1024; - return context != null ? new Cache(context.getCacheDir(), cacheSize) : null; + return new Cache(App.getContext().getCacheDir(), cacheSize); } } diff --git a/app/src/main/java/com/cappielloantonio/play/subsonic/utils/CacheUtil.java b/app/src/main/java/com/cappielloantonio/play/subsonic/utils/CacheUtil.java index 5dcb796b..2e379189 100644 --- a/app/src/main/java/com/cappielloantonio/play/subsonic/utils/CacheUtil.java +++ b/app/src/main/java/com/cappielloantonio/play/subsonic/utils/CacheUtil.java @@ -4,16 +4,16 @@ import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; +import com.cappielloantonio.play.App; + import okhttp3.Interceptor; import okhttp3.Request; public class CacheUtil { - private final Context context; private int maxAge; // 60 seconds private int maxStale; // 60 * 60 * 24 * 30 = 30 days (60 seconds * 60 minutes * 24 hours * 30 days) - public CacheUtil(Context context, int maxAge, int maxStale) { - this.context = context; + public CacheUtil(int maxAge, int maxStale) { this.maxAge = maxAge; this.maxStale = maxStale; } @@ -38,7 +38,7 @@ public class CacheUtil { }; private boolean isConnected() { - ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + ConnectivityManager connectivityManager = (ConnectivityManager) App.getContext().getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo netInfo = connectivityManager.getActiveNetworkInfo(); return (netInfo != null && netInfo.isConnected()); } diff --git a/app/src/main/java/com/cappielloantonio/play/ui/activity/MainActivity.java b/app/src/main/java/com/cappielloantonio/play/ui/activity/MainActivity.java index 8c122037..dc632f8a 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/activity/MainActivity.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/activity/MainActivity.java @@ -48,6 +48,7 @@ public class MainActivity extends BaseActivity { ConnectivityStatusBroadcastReceiver connectivityStatusBroadcastReceiver; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); diff --git a/app/src/main/java/com/cappielloantonio/play/ui/dialog/PlaylistChooserDialog.java b/app/src/main/java/com/cappielloantonio/play/ui/dialog/PlaylistChooserDialog.java index e176bc28..6e42c014 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/dialog/PlaylistChooserDialog.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/dialog/PlaylistChooserDialog.java @@ -79,7 +79,7 @@ public class PlaylistChooserDialog extends DialogFragment implements ClickCallba bind.playlistDialogRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); bind.playlistDialogRecyclerView.setHasFixedSize(true); - playlistDialogHorizontalAdapter = new PlaylistDialogHorizontalAdapter(requireContext(), this); + playlistDialogHorizontalAdapter = new PlaylistDialogHorizontalAdapter(this); bind.playlistDialogRecyclerView.setAdapter(playlistDialogHorizontalAdapter); playlistChooserViewModel.getPlaylistList(requireActivity()).observe(requireActivity(), playlists -> { diff --git a/app/src/main/java/com/cappielloantonio/play/ui/dialog/PlaylistEditorDialog.java b/app/src/main/java/com/cappielloantonio/play/ui/dialog/PlaylistEditorDialog.java index bac2a09c..0d1443e0 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/dialog/PlaylistEditorDialog.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/dialog/PlaylistEditorDialog.java @@ -99,7 +99,7 @@ public class PlaylistEditorDialog extends DialogFragment { bind.playlistSongRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); bind.playlistSongRecyclerView.setHasFixedSize(true); - playlistDialogSongHorizontalAdapter = new PlaylistDialogSongHorizontalAdapter(requireContext()); + playlistDialogSongHorizontalAdapter = new PlaylistDialogSongHorizontalAdapter(); bind.playlistSongRecyclerView.setAdapter(playlistDialogSongHorizontalAdapter); playlistEditorViewModel.getPlaylistSongLiveList().observe(requireActivity(), songs -> playlistDialogSongHorizontalAdapter.setItems(songs)); diff --git a/app/src/main/java/com/cappielloantonio/play/ui/dialog/StarredSyncDialog.java b/app/src/main/java/com/cappielloantonio/play/ui/dialog/StarredSyncDialog.java index 81000257..57ca7508 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/dialog/StarredSyncDialog.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/dialog/StarredSyncDialog.java @@ -63,7 +63,7 @@ public class StarredSyncDialog extends DialogFragment { starredSyncViewModel.getStarredTracks(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), songs -> { if (songs != null) { DownloadUtil.getDownloadTracker(context).download( - MappingUtil.mapMediaItems(context, songs, false), + MappingUtil.mapMediaItems(songs, false), songs.stream().map(Download::new).collect(Collectors.toList()) ); } diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/AlbumCatalogueFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/AlbumCatalogueFragment.java index deec0d64..20f79e68 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/AlbumCatalogueFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/AlbumCatalogueFragment.java @@ -70,7 +70,7 @@ public class AlbumCatalogueFragment extends Fragment implements ClickCallback { private void initData() { albumCatalogueViewModel = new ViewModelProvider(requireActivity()).get(AlbumCatalogueViewModel.class); - albumCatalogueViewModel.loadAlbums(requireContext(), 500); + albumCatalogueViewModel.loadAlbums(500); } private void initAppBar() { @@ -102,7 +102,7 @@ public class AlbumCatalogueFragment extends Fragment implements ClickCallback { bind.albumCatalogueRecyclerView.addItemDecoration(new GridItemDecoration(2, 20, false)); bind.albumCatalogueRecyclerView.setHasFixedSize(true); - albumAdapter = new AlbumCatalogueAdapter(requireContext(), this); + albumAdapter = new AlbumCatalogueAdapter(this); albumAdapter.setStateRestorationPolicy(RecyclerView.Adapter.StateRestorationPolicy.PREVENT_WHEN_EMPTY); bind.albumCatalogueRecyclerView.setAdapter(albumAdapter); albumCatalogueViewModel.getAlbumList().observe(getViewLifecycleOwner(), albums -> albumAdapter.setItems(albums)); diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/AlbumListPageFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/AlbumListPageFragment.java index 58bd4cd1..4b700644 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/AlbumListPageFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/AlbumListPageFragment.java @@ -102,7 +102,6 @@ public class AlbumListPageFragment extends Fragment implements ClickCallback { bind.albumListRecyclerView.setHasFixedSize(true); albumHorizontalAdapter = new AlbumHorizontalAdapter( - requireContext(), this, (albumListPageViewModel.title.equals(Album.DOWNLOADED) || albumListPageViewModel.title.equals(Album.FROM_ARTIST)) ); diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/AlbumPageFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/AlbumPageFragment.java index 6eed2cbc..bc059ed6 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/AlbumPageFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/AlbumPageFragment.java @@ -106,7 +106,7 @@ public class AlbumPageFragment extends Fragment implements ClickCallback { albumPageViewModel.getAlbumSongLiveList(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), songs -> { if (isVisible() && getActivity() != null) { DownloadUtil.getDownloadTracker(requireContext()).download( - MappingUtil.mapMediaItems(requireContext(), songs, false), + MappingUtil.mapMediaItems(songs, false), songs.stream().map(Download::new).collect(Collectors.toList()) ); } @@ -186,7 +186,7 @@ public class AlbumPageFragment extends Fragment implements ClickCallback { bind.songRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); bind.songRecyclerView.setHasFixedSize(true); - songHorizontalAdapter = new SongHorizontalAdapter(requireContext(), this, false); + songHorizontalAdapter = new SongHorizontalAdapter(this, false); bind.songRecyclerView.setAdapter(songHorizontalAdapter); albumPageViewModel.getAlbumSongLiveList(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), songs -> songHorizontalAdapter.setItems(songs)); diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/ArtistCatalogueFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/ArtistCatalogueFragment.java index 65c7954a..2008f19d 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/ArtistCatalogueFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/ArtistCatalogueFragment.java @@ -72,7 +72,7 @@ public class ArtistCatalogueFragment extends Fragment implements ClickCallback { private void initData() { artistCatalogueViewModel = new ViewModelProvider(requireActivity()).get(ArtistCatalogueViewModel.class); - artistCatalogueViewModel.loadArtists(requireContext()); + artistCatalogueViewModel.loadArtists(); } private void initAppBar() { @@ -104,7 +104,7 @@ public class ArtistCatalogueFragment extends Fragment implements ClickCallback { bind.artistCatalogueRecyclerView.addItemDecoration(new GridItemDecoration(2, 20, false)); bind.artistCatalogueRecyclerView.setHasFixedSize(true); - artistAdapter = new ArtistCatalogueAdapter(requireContext(), this); + artistAdapter = new ArtistCatalogueAdapter(this); artistAdapter.setStateRestorationPolicy(RecyclerView.Adapter.StateRestorationPolicy.PREVENT_WHEN_EMPTY); bind.artistCatalogueRecyclerView.setAdapter(artistAdapter); artistCatalogueViewModel.getArtistList().observe(getViewLifecycleOwner(), artistList -> artistAdapter.setItems(artistList)); diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/ArtistListPageFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/ArtistListPageFragment.java index b1253995..03405959 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/ArtistListPageFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/ArtistListPageFragment.java @@ -84,7 +84,7 @@ public class ArtistListPageFragment extends Fragment implements ClickCallback { bind.artistListRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); bind.artistListRecyclerView.setHasFixedSize(true); - artistHorizontalAdapter = new ArtistHorizontalAdapter(requireContext(), this); + artistHorizontalAdapter = new ArtistHorizontalAdapter(this); bind.artistListRecyclerView.setAdapter(artistHorizontalAdapter); artistListPageViewModel.getArtistList(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), artists -> artistHorizontalAdapter.setItems(artists)); } diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/ArtistPageFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/ArtistPageFragment.java index dbad7d36..19576ae8 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/ArtistPageFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/ArtistPageFragment.java @@ -18,7 +18,6 @@ import androidx.media3.session.SessionToken; import androidx.navigation.Navigation; import androidx.recyclerview.widget.LinearLayoutManager; -import com.cappielloantonio.play.App; import com.cappielloantonio.play.R; import com.cappielloantonio.play.adapter.AlbumArtistPageOrSimilarAdapter; import com.cappielloantonio.play.adapter.ArtistSimilarAdapter; @@ -139,7 +138,7 @@ public class ArtistPageFragment extends Fragment implements ClickCallback { // TODO Utilizzare il viewmodel come tramite ed evitare le chiamate dirette private void initPlayButtons() { bind.artistPageShuffleButton.setOnClickListener(v -> { - ArtistRepository artistRepository = new ArtistRepository(App.getInstance()); + ArtistRepository artistRepository = new ArtistRepository(); artistRepository.getArtistRandomSong(getViewLifecycleOwner(), artistPageViewModel.getArtist(), 20).observe(getViewLifecycleOwner(), songs -> { if (songs.size() > 0) { @@ -152,7 +151,7 @@ public class ArtistPageFragment extends Fragment implements ClickCallback { }); bind.artistPageRadioButton.setOnClickListener(v -> { - ArtistRepository artistRepository = new ArtistRepository(App.getInstance()); + ArtistRepository artistRepository = new ArtistRepository(); artistRepository.getInstantMix(artistPageViewModel.getArtist(), 20).observe(getViewLifecycleOwner(), songs -> { if (songs.size() > 0) { @@ -168,7 +167,7 @@ public class ArtistPageFragment extends Fragment implements ClickCallback { private void initTopSongsView() { bind.mostStreamedSongRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); - songHorizontalAdapter = new SongHorizontalAdapter(requireContext(), this, true); + songHorizontalAdapter = new SongHorizontalAdapter(this, true); bind.mostStreamedSongRecyclerView.setAdapter(songHorizontalAdapter); artistPageViewModel.getArtistTopSongList(10).observe(getViewLifecycleOwner(), songs -> { if (bind != null) @@ -180,7 +179,7 @@ public class ArtistPageFragment extends Fragment implements ClickCallback { private void initAlbumsView() { bind.albumsRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)); - albumArtistPageOrSimilarAdapter = new AlbumArtistPageOrSimilarAdapter(requireContext(), this); + albumArtistPageOrSimilarAdapter = new AlbumArtistPageOrSimilarAdapter(this); bind.albumsRecyclerView.setAdapter(albumArtistPageOrSimilarAdapter); artistPageViewModel.getAlbumList().observe(getViewLifecycleOwner(), albums -> { if (bind != null) @@ -196,7 +195,7 @@ public class ArtistPageFragment extends Fragment implements ClickCallback { bind.similarArtistsRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)); bind.similarArtistsRecyclerView.setHasFixedSize(true); - artistSimilarAdapter = new ArtistSimilarAdapter(requireContext(), this); + artistSimilarAdapter = new ArtistSimilarAdapter(this); bind.similarArtistsRecyclerView.setAdapter(artistSimilarAdapter); artistPageViewModel.getArtistInfo(artistPageViewModel.getArtist().getId()).observe(getViewLifecycleOwner(), artist -> { if (bind != null) diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/DownloadFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/DownloadFragment.java index 7c6f5957..553fc64a 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/DownloadFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/DownloadFragment.java @@ -117,7 +117,7 @@ public class DownloadFragment extends Fragment implements ClickCallback { private void initDownloadedSongView() { bind.downloadedTracksRecyclerView.setHasFixedSize(true); - downloadHorizontalAdapter = new DownloadHorizontalAdapter(requireContext(), this); + downloadHorizontalAdapter = new DownloadHorizontalAdapter(this); bind.downloadedTracksRecyclerView.setAdapter(downloadHorizontalAdapter); downloadViewModel.getDownloadedTracks(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), songs -> { if (songs == null || songs.isEmpty()) { diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/GenreCatalogueFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/GenreCatalogueFragment.java index 545f836c..73e1e9f4 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/GenreCatalogueFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/GenreCatalogueFragment.java @@ -101,7 +101,7 @@ public class GenreCatalogueFragment extends Fragment implements ClickCallback { bind.genreCatalogueRecyclerView.addItemDecoration(new GridItemDecoration(2, 16, false)); bind.genreCatalogueRecyclerView.setHasFixedSize(true); - genreCatalogueAdapter = new GenreCatalogueAdapter(requireContext(), this); + genreCatalogueAdapter = new GenreCatalogueAdapter(this); genreCatalogueAdapter.setStateRestorationPolicy(RecyclerView.Adapter.StateRestorationPolicy.PREVENT_WHEN_EMPTY); bind.genreCatalogueRecyclerView.setAdapter(genreCatalogueAdapter); diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/HomeFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/HomeFragment.java index 8d500e0b..d242158c 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/HomeFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/HomeFragment.java @@ -264,7 +264,7 @@ public class HomeFragment extends Fragment implements ClickCallback { private void initDiscoverSongSlideView() { bind.discoverSongViewPager.setOrientation(ViewPager2.ORIENTATION_HORIZONTAL); - discoverSongAdapter = new DiscoverSongAdapter(requireContext(), this); + discoverSongAdapter = new DiscoverSongAdapter(this); bind.discoverSongViewPager.setAdapter(discoverSongAdapter); bind.discoverSongViewPager.setOffscreenPageLimit(1); homeViewModel.getDiscoverSongSample(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), songs -> { @@ -289,7 +289,7 @@ public class HomeFragment extends Fragment implements ClickCallback { bind.similarTracksRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)); bind.similarTracksRecyclerView.setHasFixedSize(true); - similarMusicAdapter = new SimilarTrackAdapter(requireContext(), this); + similarMusicAdapter = new SimilarTrackAdapter(this); bind.similarTracksRecyclerView.setAdapter(similarMusicAdapter); homeViewModel.getStarredTracksSample(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), songs -> { if (songs == null) { @@ -314,7 +314,7 @@ public class HomeFragment extends Fragment implements ClickCallback { bind.radioArtistRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)); bind.radioArtistRecyclerView.setHasFixedSize(true); - radioArtistAdapter = new ArtistAdapter(requireContext(), this, true, false); + radioArtistAdapter = new ArtistAdapter(this, true, false); bind.radioArtistRecyclerView.setAdapter(radioArtistAdapter); homeViewModel.getStarredArtistsSample(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), artists -> { if (artists == null) { @@ -339,7 +339,7 @@ public class HomeFragment extends Fragment implements ClickCallback { bind.bestOfArtistRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)); bind.bestOfArtistRecyclerView.setHasFixedSize(true); - bestOfArtistAdapter = new ArtistAdapter(requireContext(), this, false, true); + bestOfArtistAdapter = new ArtistAdapter(this, false, true); bind.bestOfArtistRecyclerView.setAdapter(bestOfArtistAdapter); homeViewModel.getBestOfArtists(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), artists -> { if (artists == null) { @@ -363,7 +363,7 @@ public class HomeFragment extends Fragment implements ClickCallback { private void initStarredTracksView() { bind.starredTracksRecyclerView.setHasFixedSize(true); - starredSongAdapter = new SongHorizontalAdapter(requireContext(), this, true); + starredSongAdapter = new SongHorizontalAdapter(this, true); bind.starredTracksRecyclerView.setAdapter(starredSongAdapter); homeViewModel.getStarredTracks(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), songs -> { if (songs == null) { @@ -398,7 +398,7 @@ public class HomeFragment extends Fragment implements ClickCallback { private void initStarredAlbumsView() { bind.starredAlbumsRecyclerView.setHasFixedSize(true); - starredAlbumAdapter = new AlbumHorizontalAdapter(requireContext(), this, false); + starredAlbumAdapter = new AlbumHorizontalAdapter(this, false); bind.starredAlbumsRecyclerView.setAdapter(starredAlbumAdapter); homeViewModel.getStarredAlbums(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), albums -> { if (albums == null) { @@ -433,7 +433,7 @@ public class HomeFragment extends Fragment implements ClickCallback { private void initStarredArtistsView() { bind.starredArtistsRecyclerView.setHasFixedSize(true); - starredArtistAdapter = new ArtistHorizontalAdapter(requireContext(), this); + starredArtistAdapter = new ArtistHorizontalAdapter(this); bind.starredArtistsRecyclerView.setAdapter(starredArtistAdapter); homeViewModel.getStarredArtists(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), artists -> { if (artists == null) { @@ -468,7 +468,7 @@ public class HomeFragment extends Fragment implements ClickCallback { private void initNewReleasesView() { bind.newReleasesRecyclerView.setHasFixedSize(true); - newReleasesAlbumAdapter = new AlbumHorizontalAdapter(requireContext(), this, false); + newReleasesAlbumAdapter = new AlbumHorizontalAdapter(this, false); bind.newReleasesRecyclerView.setAdapter(newReleasesAlbumAdapter); homeViewModel.getRecentlyReleasedAlbums(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), albums -> { if (albums == null) { @@ -504,7 +504,7 @@ public class HomeFragment extends Fragment implements ClickCallback { bind.yearsRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)); bind.yearsRecyclerView.setHasFixedSize(true); - yearAdapter = new YearAdapter(requireContext(), this); + yearAdapter = new YearAdapter(this); bind.yearsRecyclerView.setAdapter(yearAdapter); homeViewModel.getYearList(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), years -> { if (years == null) { @@ -529,7 +529,7 @@ public class HomeFragment extends Fragment implements ClickCallback { bind.mostPlayedAlbumsRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)); bind.mostPlayedAlbumsRecyclerView.setHasFixedSize(true); - mostPlayedAlbumAdapter = new AlbumAdapter(requireContext(), this); + mostPlayedAlbumAdapter = new AlbumAdapter(this); bind.mostPlayedAlbumsRecyclerView.setAdapter(mostPlayedAlbumAdapter); homeViewModel.getMostPlayedAlbums(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), albums -> { if (albums == null) { @@ -555,7 +555,7 @@ public class HomeFragment extends Fragment implements ClickCallback { bind.recentlyPlayedAlbumsRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)); bind.recentlyPlayedAlbumsRecyclerView.setHasFixedSize(true); - recentlyPlayedAlbumAdapter = new AlbumAdapter(requireContext(), this); + recentlyPlayedAlbumAdapter = new AlbumAdapter(this); bind.recentlyPlayedAlbumsRecyclerView.setAdapter(recentlyPlayedAlbumAdapter); homeViewModel.getRecentlyPlayedAlbumList(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), albums -> { if (albums == null) { @@ -580,7 +580,7 @@ public class HomeFragment extends Fragment implements ClickCallback { bind.recentlyAddedAlbumsRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)); bind.recentlyAddedAlbumsRecyclerView.setHasFixedSize(true); - recentlyAddedAlbumAdapter = new AlbumAdapter(requireContext(), this); + recentlyAddedAlbumAdapter = new AlbumAdapter(this); bind.recentlyAddedAlbumsRecyclerView.setAdapter(recentlyAddedAlbumAdapter); homeViewModel.getMostRecentlyAddedAlbums(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), albums -> { if (albums == null) { @@ -618,7 +618,7 @@ public class HomeFragment extends Fragment implements ClickCallback { genericPlaylistTitleTextView.setText(MusicUtil.getReadableString(playlist.getName())); genericPlaylistRecyclerView.setHasFixedSize(true); - SongHorizontalAdapter trackAdapter = new SongHorizontalAdapter(requireContext(), this, true); + SongHorizontalAdapter trackAdapter = new SongHorizontalAdapter(this, true); genericPlaylistRecyclerView.setAdapter(trackAdapter); homeViewModel.getPlaylistSongLiveList(playlist.getId()).observe(getViewLifecycleOwner(), songs -> { @@ -660,7 +660,7 @@ public class HomeFragment extends Fragment implements ClickCallback { private void initNewestPodcastsView() { bind.newestPodcastsViewPager.setOrientation(ViewPager2.ORIENTATION_HORIZONTAL); - podcastEpisodeAdapter = new PodcastEpisodeAdapter(requireContext(), this); + podcastEpisodeAdapter = new PodcastEpisodeAdapter(this); bind.newestPodcastsViewPager.setAdapter(podcastEpisodeAdapter); bind.newestPodcastsViewPager.setOffscreenPageLimit(1); homeViewModel.getNewestPodcastEpisodes(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), podcastEpisodes -> { @@ -682,7 +682,7 @@ public class HomeFragment extends Fragment implements ClickCallback { bind.gridTracksRecyclerView.addItemDecoration(new GridItemDecoration(3, 8, false)); bind.gridTracksRecyclerView.setHasFixedSize(true); - gridTrackAdapter = new GridTrackAdapter(requireContext(), this); + gridTrackAdapter = new GridTrackAdapter(this); bind.gridTracksRecyclerView.setAdapter(gridTrackAdapter); homeViewModel.getGridSongSample(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), chronologies -> { diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/LibraryFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/LibraryFragment.java index 6b2a3630..0852e2e7 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/LibraryFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/LibraryFragment.java @@ -145,7 +145,7 @@ public class LibraryFragment extends Fragment implements ClickCallback { bind.albumRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)); bind.albumRecyclerView.setHasFixedSize(true); - albumAdapter = new AlbumAdapter(requireContext(), this); + albumAdapter = new AlbumAdapter(this); bind.albumRecyclerView.setAdapter(albumAdapter); libraryViewModel.getAlbumSample(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), albums -> { if (albums == null) { @@ -169,7 +169,7 @@ public class LibraryFragment extends Fragment implements ClickCallback { bind.artistRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)); bind.artistRecyclerView.setHasFixedSize(true); - artistAdapter = new ArtistAdapter(requireContext(), this, false, false); + artistAdapter = new ArtistAdapter(this, false, false); bind.artistRecyclerView.setAdapter(artistAdapter); libraryViewModel.getArtistSample(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), artists -> { if (artists == null) { @@ -194,7 +194,7 @@ public class LibraryFragment extends Fragment implements ClickCallback { bind.genreRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), 3, GridLayoutManager.HORIZONTAL, false)); bind.genreRecyclerView.setHasFixedSize(true); - genreAdapter = new GenreAdapter(requireContext(), this); + genreAdapter = new GenreAdapter(this); bind.genreRecyclerView.setAdapter(genreAdapter); libraryViewModel.getGenreSample(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), genres -> { @@ -219,7 +219,7 @@ public class LibraryFragment extends Fragment implements ClickCallback { bind.playlistRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); bind.playlistRecyclerView.setHasFixedSize(true); - playlistHorizontalAdapter = new PlaylistHorizontalAdapter(requireContext(), this); + playlistHorizontalAdapter = new PlaylistHorizontalAdapter(this); bind.playlistRecyclerView.setAdapter(playlistHorizontalAdapter); libraryViewModel.getPlaylistSample(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), playlists -> { if (playlists == null) { diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/LoginFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/LoginFragment.java index da3531a8..3654f145 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/LoginFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/LoginFragment.java @@ -89,7 +89,7 @@ public class LoginFragment extends Fragment implements ClickCallback { bind.serverListRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); bind.serverListRecyclerView.setHasFixedSize(true); - serverAdapter = new ServerAdapter(requireContext(), this); + serverAdapter = new ServerAdapter(this); bind.serverListRecyclerView.setAdapter(serverAdapter); loginViewModel.getServerList().observe(getViewLifecycleOwner(), servers -> { if (servers.size() > 0) { @@ -119,7 +119,7 @@ public class LoginFragment extends Fragment implements ClickCallback { Server server = bundle.getParcelable("server_object"); saveServerPreference(server.getServerId(), server.getAddress(), server.getUsername(), server.getPassword(), server.isLowSecurity()); - SystemRepository systemRepository = new SystemRepository(App.getInstance()); + SystemRepository systemRepository = new SystemRepository(); systemRepository.checkUserCredential(new SystemCallback() { @Override public void onError(Exception exception) { @@ -148,7 +148,7 @@ public class LoginFragment extends Fragment implements ClickCallback { Preferences.setPassword(password); Preferences.setLowSecurity(isLowSecurity); - App.getSubsonicClientInstance(requireContext(), true); + App.getSubsonicClientInstance(true); } private void resetServerPreference() { @@ -160,6 +160,6 @@ public class LoginFragment extends Fragment implements ClickCallback { Preferences.setSalt(null); Preferences.setLowSecurity(false); - App.getSubsonicClientInstance(requireContext(), true); + App.getSubsonicClientInstance(true); } } diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlayerControllerFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlayerControllerFragment.java index 5023b663..e4f1407b 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlayerControllerFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlayerControllerFragment.java @@ -27,7 +27,6 @@ import com.cappielloantonio.play.R; import com.cappielloantonio.play.databinding.InnerFragmentPlayerControllerBinding; import com.cappielloantonio.play.model.Media; import com.cappielloantonio.play.service.MediaService; -import com.cappielloantonio.play.subsonic.models.Child; import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.ui.dialog.RatingDialog; import com.cappielloantonio.play.ui.fragment.pager.PlayerControllerHorizontalPager; @@ -170,8 +169,8 @@ public class PlayerControllerFragment extends Fragment { } } - String transcodingExtension = MusicUtil.getTranscodingFormatPreference(requireContext()); - String transcodingBitrate = Integer.parseInt(MusicUtil.getBitratePreference(requireContext())) != 0 ? Integer.parseInt(MusicUtil.getBitratePreference(requireContext())) + "kbps" : "Original"; + String transcodingExtension = MusicUtil.getTranscodingFormatPreference(); + String transcodingBitrate = Integer.parseInt(MusicUtil.getBitratePreference()) != 0 ? Integer.parseInt(MusicUtil.getBitratePreference()) + "kbps" : "Original"; if (transcodingExtension.equals("raw") && transcodingBitrate.equals("Original")) { playerMediaTranscodingIcon.setVisibility(View.GONE); diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlayerCoverFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlayerCoverFragment.java index e3b91ac3..02b8d5dc 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlayerCoverFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlayerCoverFragment.java @@ -90,7 +90,7 @@ public class PlayerCoverFragment extends Fragment { if (song != null && bind != null) { bind.innerButtonTopLeft.setOnClickListener(view -> { DownloadUtil.getDownloadTracker(requireContext()).download( - MappingUtil.mapMediaItem(requireContext(), song, false), + MappingUtil.mapMediaItem(song, false), new Download(song) ); }); diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlayerQueueFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlayerQueueFragment.java index 61744c2c..d537a33c 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlayerQueueFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlayerQueueFragment.java @@ -89,7 +89,7 @@ public class PlayerQueueFragment extends Fragment implements ClickCallback { bind.playerQueueRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); bind.playerQueueRecyclerView.setHasFixedSize(true); - playerSongQueueAdapter = new PlayerSongQueueAdapter(requireContext(), this); + playerSongQueueAdapter = new PlayerSongQueueAdapter(this); bind.playerQueueRecyclerView.setAdapter(playerSongQueueAdapter); playerBottomSheetViewModel.getQueueSong().observe(getViewLifecycleOwner(), queue -> { if (queue != null) { diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlaylistCatalogueFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlaylistCatalogueFragment.java index ff8b941f..537e740e 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlaylistCatalogueFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlaylistCatalogueFragment.java @@ -107,7 +107,7 @@ public class PlaylistCatalogueFragment extends Fragment implements ClickCallback bind.playlistCatalogueRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); bind.playlistCatalogueRecyclerView.setHasFixedSize(true); - playlistHorizontalAdapter = new PlaylistHorizontalAdapter(requireContext(), this); + playlistHorizontalAdapter = new PlaylistHorizontalAdapter(this); bind.playlistCatalogueRecyclerView.setAdapter(playlistHorizontalAdapter); if (getActivity() != null) { diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlaylistPageFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlaylistPageFragment.java index 5abfdb5b..472523bb 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlaylistPageFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlaylistPageFragment.java @@ -105,7 +105,7 @@ public class PlaylistPageFragment extends Fragment implements ClickCallback { playlistPageViewModel.getPlaylistSongLiveList(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), songs -> { if (isVisible() && getActivity() != null) { DownloadUtil.getDownloadTracker(requireContext()).download( - MappingUtil.mapMediaItems(requireContext(), songs, false), + MappingUtil.mapMediaItems(songs, false), songs.stream().map(child -> { Download toDownload = new Download(child); toDownload.setPlaylistId(playlistPageViewModel.getPlaylist().getId()); @@ -220,7 +220,7 @@ public class PlaylistPageFragment extends Fragment implements ClickCallback { bind.songRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); bind.songRecyclerView.setHasFixedSize(true); - songHorizontalAdapter = new SongHorizontalAdapter(requireContext(), this, true); + songHorizontalAdapter = new SongHorizontalAdapter(this, true); bind.songRecyclerView.setAdapter(songHorizontalAdapter); playlistPageViewModel.getPlaylistSongLiveList(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), songs -> songHorizontalAdapter.setItems(songs)); diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/SearchFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/SearchFragment.java index febb65c5..b9e9e72f 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/SearchFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/SearchFragment.java @@ -92,7 +92,7 @@ public class SearchFragment extends Fragment implements ClickCallback { bind.searchResultArtistRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)); bind.searchResultArtistRecyclerView.setHasFixedSize(true); - artistAdapter = new ArtistAdapter(requireContext(), this, false, false); + artistAdapter = new ArtistAdapter(this, false, false); bind.searchResultArtistRecyclerView.setAdapter(artistAdapter); CustomLinearSnapHelper artistSnapHelper = new CustomLinearSnapHelper(); @@ -102,7 +102,7 @@ public class SearchFragment extends Fragment implements ClickCallback { bind.searchResultAlbumRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)); bind.searchResultAlbumRecyclerView.setHasFixedSize(true); - albumAdapter = new AlbumAdapter(requireContext(), this); + albumAdapter = new AlbumAdapter(this); bind.searchResultAlbumRecyclerView.setAdapter(albumAdapter); CustomLinearSnapHelper albumSnapHelper = new CustomLinearSnapHelper(); @@ -112,7 +112,7 @@ public class SearchFragment extends Fragment implements ClickCallback { bind.searchResultTracksRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); bind.searchResultTracksRecyclerView.setHasFixedSize(true); - songHorizontalAdapter = new SongHorizontalAdapter(requireContext(), this, true); + songHorizontalAdapter = new SongHorizontalAdapter(this, true); bind.searchResultTracksRecyclerView.setAdapter(songHorizontalAdapter); } diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/SongListPageFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/SongListPageFragment.java index c4b05c25..0bba0d6d 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/SongListPageFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/SongListPageFragment.java @@ -161,7 +161,7 @@ public class SongListPageFragment extends Fragment implements ClickCallback { bind.songListRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); bind.songListRecyclerView.setHasFixedSize(true); - songHorizontalAdapter = new SongHorizontalAdapter(requireContext(), this, true); + songHorizontalAdapter = new SongHorizontalAdapter(this, true); bind.songListRecyclerView.setAdapter(songHorizontalAdapter); songListPageViewModel.getSongList(getViewLifecycleOwner()).observe(getViewLifecycleOwner(), songs -> songHorizontalAdapter.setItems(songs)); } diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/AlbumBottomSheetDialog.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/AlbumBottomSheetDialog.java index 14b845aa..fede89c6 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/AlbumBottomSheetDialog.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/AlbumBottomSheetDialog.java @@ -20,7 +20,6 @@ import androidx.navigation.fragment.NavHostFragment; import com.bumptech.glide.load.resource.bitmap.CenterCrop; import com.bumptech.glide.load.resource.bitmap.RoundedCorners; -import com.cappielloantonio.play.App; import com.cappielloantonio.play.R; import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.interfaces.MediaCallback; @@ -102,7 +101,7 @@ public class AlbumBottomSheetDialog extends BottomSheetDialogFragment implements TextView playRadio = view.findViewById(R.id.play_radio_text_view); playRadio.setOnClickListener(v -> { - AlbumRepository albumRepository = new AlbumRepository(App.getInstance()); + AlbumRepository albumRepository = new AlbumRepository(); albumRepository.getInstantMix(album, 20, new MediaCallback() { @Override public void onError(Exception exception) { @@ -123,7 +122,7 @@ public class AlbumBottomSheetDialog extends BottomSheetDialogFragment implements TextView playRandom = view.findViewById(R.id.play_random_text_view); playRandom.setOnClickListener(v -> { - AlbumRepository albumRepository = new AlbumRepository(App.getInstance()); + AlbumRepository albumRepository = new AlbumRepository(); albumRepository.getAlbumTracks(album.getId()).observe(getViewLifecycleOwner(), songs -> { Collections.shuffle(songs); @@ -154,7 +153,7 @@ public class AlbumBottomSheetDialog extends BottomSheetDialogFragment implements TextView removeAll = view.findViewById(R.id.remove_all_text_view); albumBottomSheetViewModel.getAlbumTracks().observe(getViewLifecycleOwner(), songs -> { - List mediaItems = MappingUtil.mapMediaItems(requireContext(), songs, false); + List mediaItems = MappingUtil.mapMediaItems(songs, false); List downloads = songs.stream().map(Download::new).collect(Collectors.toList()); downloadAll.setOnClickListener(v -> { diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/ArtistBottomSheetDialog.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/ArtistBottomSheetDialog.java index b8d18199..705850e3 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/ArtistBottomSheetDialog.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/ArtistBottomSheetDialog.java @@ -18,7 +18,6 @@ import androidx.media3.session.SessionToken; import com.bumptech.glide.load.resource.bitmap.CenterCrop; import com.bumptech.glide.load.resource.bitmap.RoundedCorners; -import com.cappielloantonio.play.App; import com.cappielloantonio.play.R; import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.repository.ArtistRepository; @@ -90,7 +89,7 @@ public class ArtistBottomSheetDialog extends BottomSheetDialogFragment implement TextView playRadio = view.findViewById(R.id.play_radio_text_view); playRadio.setOnClickListener(v -> { - ArtistRepository artistRepository = new ArtistRepository(App.getInstance()); + ArtistRepository artistRepository = new ArtistRepository(); artistRepository.getInstantMix(artist, 20).observe(getViewLifecycleOwner(), songs -> { if (songs.size() > 0) { @@ -104,7 +103,7 @@ public class ArtistBottomSheetDialog extends BottomSheetDialogFragment implement TextView playRandom = view.findViewById(R.id.play_random_text_view); playRandom.setOnClickListener(v -> { - ArtistRepository artistRepository = new ArtistRepository(App.getInstance()); + ArtistRepository artistRepository = new ArtistRepository(); artistRepository.getArtistRandomSong(getViewLifecycleOwner(), artist, 20).observe(getViewLifecycleOwner(), songs -> { if (songs.size() > 0) { MediaManager.startQueue(mediaBrowserListenableFuture, requireContext(), songs, 0); diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/PodcastBottomSheetDialog.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/PodcastBottomSheetDialog.java index d30b227a..d6892b6a 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/PodcastBottomSheetDialog.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/PodcastBottomSheetDialog.java @@ -99,7 +99,7 @@ public class PodcastBottomSheetDialog extends BottomSheetDialogFragment implemen download.setOnClickListener(v -> { // TODO /* DownloadUtil.getDownloadTracker(requireContext()).download( - MappingUtil.mapMediaItem(requireContext(), podcast, false), + MappingUtil.mapMediaItem(podcast, false), MappingUtil.mapDownload(podcast, null, null) ); */ dismissBottomSheet(); @@ -109,7 +109,7 @@ public class PodcastBottomSheetDialog extends BottomSheetDialogFragment implemen remove.setOnClickListener(v -> { // TODO /* DownloadUtil.getDownloadTracker(requireContext()).remove( - MappingUtil.mapMediaItem(requireContext(), podcast, false), + MappingUtil.mapMediaItem(podcast, false), MappingUtil.mapDownload(podcast, null, null) ); */ dismissBottomSheet(); @@ -135,7 +135,7 @@ public class PodcastBottomSheetDialog extends BottomSheetDialogFragment implemen private void initDownloadUI(TextView download, TextView remove) { // TODO - /* if (DownloadUtil.getDownloadTracker(requireContext()).isDownloaded(MappingUtil.mapMediaItem(requireContext(), podcast, false))) { + /* if (DownloadUtil.getDownloadTracker(requireContext()).isDownloaded(MappingUtil.mapMediaItem(podcast, false))) { download.setVisibility(View.GONE); remove.setVisibility(View.VISIBLE); } else { diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/SongBottomSheetDialog.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/SongBottomSheetDialog.java index 715d7954..c470ec94 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/SongBottomSheetDialog.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/SongBottomSheetDialog.java @@ -120,7 +120,7 @@ public class SongBottomSheetDialog extends BottomSheetDialogFragment implements } if (songs.size() > 0) { - MediaManager.enqueue(mediaBrowserListenableFuture, requireContext(), (List) songs, true); + MediaManager.enqueue(mediaBrowserListenableFuture, requireContext(), songs, true); dismissBottomSheet(); } }); @@ -155,7 +155,7 @@ public class SongBottomSheetDialog extends BottomSheetDialogFragment implements TextView download = view.findViewById(R.id.download_text_view); download.setOnClickListener(v -> { DownloadUtil.getDownloadTracker(requireContext()).download( - MappingUtil.mapMediaItem(requireContext(), song, false), + MappingUtil.mapMediaItem(song, false), new Download(song) ); dismissBottomSheet(); @@ -164,7 +164,7 @@ public class SongBottomSheetDialog extends BottomSheetDialogFragment implements TextView remove = view.findViewById(R.id.remove_text_view); remove.setOnClickListener(v -> { DownloadUtil.getDownloadTracker(requireContext()).remove( - MappingUtil.mapMediaItem(requireContext(), song, false), + MappingUtil.mapMediaItem(song, false), new Download(song) ); dismissBottomSheet(); @@ -219,7 +219,7 @@ public class SongBottomSheetDialog extends BottomSheetDialogFragment implements } private void initDownloadUI(TextView download, TextView remove) { - if (DownloadUtil.getDownloadTracker(requireContext()).isDownloaded(MappingUtil.mapMediaItem(requireContext(), song, false))) { + if (DownloadUtil.getDownloadTracker(requireContext()).isDownloaded(MappingUtil.mapMediaItem(song, false))) { download.setVisibility(View.GONE); remove.setVisibility(View.VISIBLE); } else { diff --git a/app/src/main/java/com/cappielloantonio/play/util/DownloadUtil.java b/app/src/main/java/com/cappielloantonio/play/util/DownloadUtil.java index c8dc962e..7cdc9ee8 100644 --- a/app/src/main/java/com/cappielloantonio/play/util/DownloadUtil.java +++ b/app/src/main/java/com/cappielloantonio/play/util/DownloadUtil.java @@ -30,7 +30,6 @@ public final class DownloadUtil { public static final String DOWNLOAD_NOTIFICATION_CHANNEL_ID = "download_channel"; - private static final String TAG = "DemoUtil"; private static final String DOWNLOAD_CONTENT_DIRECTORY = "downloads"; private static DataSource.Factory dataSourceFactory; diff --git a/app/src/main/java/com/cappielloantonio/play/util/MappingUtil.java b/app/src/main/java/com/cappielloantonio/play/util/MappingUtil.java index e2cd1310..b88fc9a6 100644 --- a/app/src/main/java/com/cappielloantonio/play/util/MappingUtil.java +++ b/app/src/main/java/com/cappielloantonio/play/util/MappingUtil.java @@ -1,6 +1,5 @@ package com.cappielloantonio.play.util; -import android.content.Context; import android.net.Uri; import android.os.Bundle; @@ -10,6 +9,7 @@ import androidx.media3.common.MediaMetadata; import androidx.media3.common.MimeTypes; import androidx.media3.common.util.UnstableApi; +import com.cappielloantonio.play.App; import com.cappielloantonio.play.subsonic.models.Child; import java.util.ArrayList; @@ -17,18 +17,18 @@ import java.util.List; @OptIn(markerClass = UnstableApi.class) public class MappingUtil { - public static ArrayList mapMediaItems(Context context, List items, boolean stream) { + public static ArrayList mapMediaItems(List items, boolean stream) { ArrayList mediaItems = new ArrayList(); for (int i = 0; i < items.size(); i++) { - mediaItems.add(mapMediaItem(context, items.get(i), stream)); + mediaItems.add(mapMediaItem(items.get(i), stream)); } return mediaItems; } - public static MediaItem mapMediaItem(Context context, Child media, boolean stream) { - boolean isDownloaded = DownloadUtil.getDownloadTracker(context).isDownloaded(MusicUtil.getDownloadUri(media.getId())); + public static MediaItem mapMediaItem(Child media, boolean stream) { + boolean isDownloaded = DownloadUtil.getDownloadTracker(App.getContext()).isDownloaded(MusicUtil.getDownloadUri(media.getId())); Bundle bundle = new Bundle(); bundle.putString("id", media.getId()); @@ -78,18 +78,18 @@ public class MappingUtil { ) .setRequestMetadata( new MediaItem.RequestMetadata.Builder() - .setMediaUri(getUri(context, media, stream && !isDownloaded)) + .setMediaUri(getUri(media, stream && !isDownloaded)) .setExtras(bundle) .build() ) .setMimeType(MimeTypes.BASE_TYPE_AUDIO) - .setUri(getUri(context, media, stream && !isDownloaded)) + .setUri(getUri(media, stream && !isDownloaded)) .build(); } - private static Uri getUri(Context context, Child media, boolean stream) { + private static Uri getUri(Child media, boolean stream) { if (stream) { - return MusicUtil.getStreamUri(context, media.getId()); + return MusicUtil.getStreamUri(media.getId()); } else { return MusicUtil.getDownloadUri(media.getId()); } diff --git a/app/src/main/java/com/cappielloantonio/play/util/MusicUtil.java b/app/src/main/java/com/cappielloantonio/play/util/MusicUtil.java index 89662816..2c059de4 100644 --- a/app/src/main/java/com/cappielloantonio/play/util/MusicUtil.java +++ b/app/src/main/java/com/cappielloantonio/play/util/MusicUtil.java @@ -21,12 +21,12 @@ import java.util.stream.Collectors; public class MusicUtil { private static final String TAG = "MusicUtil"; - public static Uri getStreamUri(Context context, String id) { - Map params = App.getSubsonicClientInstance(App.getInstance(), false).getParams(); + public static Uri getStreamUri(String id) { + Map params = App.getSubsonicClientInstance(false).getParams(); StringBuilder uri = new StringBuilder(); - uri.append(App.getSubsonicClientInstance(App.getInstance(), false).getUrl()); + uri.append(App.getSubsonicClientInstance(false).getUrl()); uri.append("stream"); if (params.containsKey("u") && params.get("u") != null) @@ -42,19 +42,19 @@ public class MusicUtil { if (params.containsKey("c") && params.get("c") != null) uri.append("&c=").append(params.get("c")); - uri.append("&maxBitRate=").append(getBitratePreference(context)); - uri.append("&format=").append(getTranscodingFormatPreference(context)); + uri.append("&maxBitRate=").append(getBitratePreference()); + uri.append("&format=").append(getTranscodingFormatPreference()); uri.append("&id=").append(id); return Uri.parse(uri.toString()); } public static Uri getDownloadUri(String id) { - Map params = App.getSubsonicClientInstance(App.getInstance(), false).getParams(); + Map params = App.getSubsonicClientInstance(false).getParams(); StringBuilder uri = new StringBuilder(); - uri.append(App.getSubsonicClientInstance(App.getInstance(), false).getUrl()); + uri.append(App.getSubsonicClientInstance(false).getUrl()); uri.append("download"); if (params.containsKey("u") && params.get("u") != null) @@ -185,10 +185,10 @@ public class MusicUtil { } } - public static String getBitratePreference(Context context) { - Network network = getConnectivityManager(context).getActiveNetwork(); - NetworkCapabilities networkCapabilities = getConnectivityManager(context).getNetworkCapabilities(network); - String audioTranscodeFormat = getTranscodingFormatPreference(context); + public static String getBitratePreference() { + Network network = getConnectivityManager().getActiveNetwork(); + NetworkCapabilities networkCapabilities = getConnectivityManager().getNetworkCapabilities(network); + String audioTranscodeFormat = getTranscodingFormatPreference(); if (audioTranscodeFormat.equals("raw") || network == null || networkCapabilities == null) return "0"; @@ -202,9 +202,9 @@ public class MusicUtil { } } - public static String getTranscodingFormatPreference(Context context) { - Network network = getConnectivityManager(context).getActiveNetwork(); - NetworkCapabilities networkCapabilities = getConnectivityManager(context).getNetworkCapabilities(network); + public static String getTranscodingFormatPreference() { + Network network = getConnectivityManager().getActiveNetwork(); + NetworkCapabilities networkCapabilities = getConnectivityManager().getNetworkCapabilities(network); if (network == null || networkCapabilities == null) return "raw"; @@ -217,7 +217,7 @@ public class MusicUtil { } } - private static ConnectivityManager getConnectivityManager(Context context) { - return (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + private static ConnectivityManager getConnectivityManager() { + return (ConnectivityManager) App.getContext().getSystemService(Context.CONNECTIVITY_SERVICE); } } diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/AlbumBottomSheetViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/AlbumBottomSheetViewModel.java index 75c1732b..f714b6c8 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/AlbumBottomSheetViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/AlbumBottomSheetViewModel.java @@ -25,8 +25,8 @@ public class AlbumBottomSheetViewModel extends AndroidViewModel { public AlbumBottomSheetViewModel(@NonNull Application application) { super(application); - albumRepository = new AlbumRepository(application); - artistRepository = new ArtistRepository(application); + albumRepository = new AlbumRepository(); + artistRepository = new ArtistRepository(); } public AlbumID3 getAlbum() { diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/AlbumCatalogueViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/AlbumCatalogueViewModel.java index 991fcd2b..d1e3c435 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/AlbumCatalogueViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/AlbumCatalogueViewModel.java @@ -1,7 +1,6 @@ package com.cappielloantonio.play.viewmodel; import android.app.Application; -import android.content.Context; import androidx.annotation.NonNull; import androidx.lifecycle.AndroidViewModel; @@ -12,7 +11,6 @@ import com.cappielloantonio.play.App; import com.cappielloantonio.play.interfaces.MediaCallback; import com.cappielloantonio.play.subsonic.base.ApiResponse; import com.cappielloantonio.play.subsonic.models.AlbumID3; -import com.cappielloantonio.play.subsonic.models.SubsonicResponse; import java.util.ArrayList; import java.util.List; @@ -33,8 +31,8 @@ public class AlbumCatalogueViewModel extends AndroidViewModel { return albumList; } - public void loadAlbums(Context context, int size) { - retrieveAlbums(context, new MediaCallback() { + public void loadAlbums(int size) { + retrieveAlbums(new MediaCallback() { @Override public void onError(Exception exception) { } @@ -49,15 +47,15 @@ public class AlbumCatalogueViewModel extends AndroidViewModel { albumList.setValue(liveAlbum); if (media.size() == size) { - loadAlbums(context, size); + loadAlbums(size); } } }, size, size * page++); } - private void retrieveAlbums(Context context, MediaCallback callback, int size, int offset) { - App.getSubsonicClientInstance(context, false) + private void retrieveAlbums(MediaCallback callback, int size, int offset) { + App.getSubsonicClientInstance(false) .getAlbumSongListClient() .getAlbumList2("alphabeticalByName", size, offset, null, null) .enqueue(new Callback() { diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/AlbumListPageViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/AlbumListPageViewModel.java index bac2c3c9..2b347800 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/AlbumListPageViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/AlbumListPageViewModel.java @@ -31,8 +31,8 @@ public class AlbumListPageViewModel extends AndroidViewModel { public AlbumListPageViewModel(@NonNull Application application) { super(application); - albumRepository = new AlbumRepository(application); - downloadRepository = new DownloadRepository(application); + albumRepository = new AlbumRepository(); + downloadRepository = new DownloadRepository(); } public LiveData> getAlbumList(LifecycleOwner owner) { diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/AlbumPageViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/AlbumPageViewModel.java index 832bb1bc..accc4486 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/AlbumPageViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/AlbumPageViewModel.java @@ -30,9 +30,9 @@ public class AlbumPageViewModel extends AndroidViewModel { public AlbumPageViewModel(@NonNull Application application) { super(application); - albumRepository = new AlbumRepository(application); - artistRepository = new ArtistRepository(application); - downloadRepository = new DownloadRepository(application); + albumRepository = new AlbumRepository(); + artistRepository = new ArtistRepository(); + downloadRepository = new DownloadRepository(); } public LiveData> getAlbumSongLiveList(LifecycleOwner owner) { diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/ArtistBottomSheetViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/ArtistBottomSheetViewModel.java index 5af36135..1c8d2f52 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/ArtistBottomSheetViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/ArtistBottomSheetViewModel.java @@ -18,7 +18,7 @@ public class ArtistBottomSheetViewModel extends AndroidViewModel { public ArtistBottomSheetViewModel(@NonNull Application application) { super(application); - albumRepository = new AlbumRepository(application); + albumRepository = new AlbumRepository(); } public ArtistID3 getArtist() { diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/ArtistCatalogueViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/ArtistCatalogueViewModel.java index 13f649ac..011d0411 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/ArtistCatalogueViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/ArtistCatalogueViewModel.java @@ -1,7 +1,6 @@ package com.cappielloantonio.play.viewmodel; import android.app.Application; -import android.content.Context; import androidx.annotation.NonNull; import androidx.lifecycle.AndroidViewModel; @@ -12,7 +11,6 @@ import com.cappielloantonio.play.App; import com.cappielloantonio.play.subsonic.base.ApiResponse; import com.cappielloantonio.play.subsonic.models.ArtistID3; import com.cappielloantonio.play.subsonic.models.IndexID3; -import com.cappielloantonio.play.subsonic.models.SubsonicResponse; import java.util.ArrayList; import java.util.List; @@ -31,8 +29,8 @@ public class ArtistCatalogueViewModel extends AndroidViewModel { return artistList; } - public void loadArtists(Context context) { - App.getSubsonicClientInstance(context, false) + public void loadArtists() { + App.getSubsonicClientInstance(false) .getBrowsingClient() .getArtists() .enqueue(new Callback() { diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/ArtistListPageViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/ArtistListPageViewModel.java index b71c7482..170adab9 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/ArtistListPageViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/ArtistListPageViewModel.java @@ -31,8 +31,8 @@ public class ArtistListPageViewModel extends AndroidViewModel { public ArtistListPageViewModel(@NonNull Application application) { super(application); - artistRepository = new ArtistRepository(application); - downloadRepository = new DownloadRepository(application); + artistRepository = new ArtistRepository(); + downloadRepository = new DownloadRepository(); } public LiveData> getArtistList(LifecycleOwner owner) { diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/ArtistPageViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/ArtistPageViewModel.java index 25363aae..843e3ca8 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/ArtistPageViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/ArtistPageViewModel.java @@ -24,8 +24,8 @@ public class ArtistPageViewModel extends AndroidViewModel { public ArtistPageViewModel(@NonNull Application application) { super(application); - albumRepository = new AlbumRepository(application); - artistRepository = new ArtistRepository(application); + albumRepository = new AlbumRepository(); + artistRepository = new ArtistRepository(); } public LiveData> getAlbumList() { diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/DownloadViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/DownloadViewModel.java index 42dbaecb..1fdea12c 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/DownloadViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/DownloadViewModel.java @@ -13,7 +13,6 @@ import com.cappielloantonio.play.repository.DownloadRepository; import com.cappielloantonio.play.subsonic.models.AlbumID3; import com.cappielloantonio.play.subsonic.models.ArtistID3; import com.cappielloantonio.play.subsonic.models.Child; -import com.cappielloantonio.play.util.MappingUtil; import java.util.List; import java.util.stream.Collectors; @@ -31,7 +30,7 @@ public class DownloadViewModel extends AndroidViewModel { public DownloadViewModel(@NonNull Application application) { super(application); - downloadRepository = new DownloadRepository(application); + downloadRepository = new DownloadRepository(); } public LiveData> getDownloadedTracks(LifecycleOwner owner) { diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/FilterViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/FilterViewModel.java index 085c55c8..ab35622e 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/FilterViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/FilterViewModel.java @@ -21,7 +21,7 @@ public class FilterViewModel extends AndroidViewModel { public FilterViewModel(@NonNull Application application) { super(application); - genreRepository = new GenreRepository(application); + genreRepository = new GenreRepository(); } public LiveData> getGenreList() { diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/GenreCatalogueViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/GenreCatalogueViewModel.java index c1669348..2384bb33 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/GenreCatalogueViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/GenreCatalogueViewModel.java @@ -17,7 +17,7 @@ public class GenreCatalogueViewModel extends AndroidViewModel { public GenreCatalogueViewModel(@NonNull Application application) { super(application); - genreRepository = new GenreRepository(application); + genreRepository = new GenreRepository(); } public LiveData> getGenreList() { diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/HomeViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/HomeViewModel.java index f71181c1..3f4aecd1 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/HomeViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/HomeViewModel.java @@ -60,12 +60,12 @@ public class HomeViewModel extends AndroidViewModel { public HomeViewModel(@NonNull Application application) { super(application); - songRepository = new SongRepository(application); - albumRepository = new AlbumRepository(application); - artistRepository = new ArtistRepository(application); - playlistRepository = new PlaylistRepository(application); - podcastRepository = new PodcastRepository(application); - chronologyRepository = new ChronologyRepository(application); + songRepository = new SongRepository(); + albumRepository = new AlbumRepository(); + artistRepository = new ArtistRepository(); + playlistRepository = new PlaylistRepository(); + podcastRepository = new PodcastRepository(); + chronologyRepository = new ChronologyRepository(); } public LiveData> getDiscoverSongSample(LifecycleOwner owner) { diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/LibraryViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/LibraryViewModel.java index bd28470e..b7777d99 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/LibraryViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/LibraryViewModel.java @@ -35,10 +35,10 @@ public class LibraryViewModel extends AndroidViewModel { public LibraryViewModel(@NonNull Application application) { super(application); - albumRepository = new AlbumRepository(application); - artistRepository = new ArtistRepository(application); - genreRepository = new GenreRepository(application); - playlistRepository = new PlaylistRepository(application); + albumRepository = new AlbumRepository(); + artistRepository = new ArtistRepository(); + genreRepository = new GenreRepository(); + playlistRepository = new PlaylistRepository(); } public LiveData> getAlbumSample(LifecycleOwner owner) { diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/LoginViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/LoginViewModel.java index 6fdd7973..33cba144 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/LoginViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/LoginViewModel.java @@ -19,7 +19,7 @@ public class LoginViewModel extends AndroidViewModel { public LoginViewModel(@NonNull Application application) { super(application); - serverRepository = new ServerRepository(application); + serverRepository = new ServerRepository(); } public LiveData> getServerList() { diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/MainViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/MainViewModel.java index f845ac00..806c9ec2 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/MainViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/MainViewModel.java @@ -20,11 +20,11 @@ public class MainViewModel extends AndroidViewModel { super(application); this.application = application; - systemRepository = new SystemRepository(application); + systemRepository = new SystemRepository(); } public boolean isQueueLoaded() { - QueueRepository queueRepository = new QueueRepository(application); + QueueRepository queueRepository = new QueueRepository(); return queueRepository.count() != 0; } diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/PlayerBottomSheetViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/PlayerBottomSheetViewModel.java index 141a18a7..49e194f6 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/PlayerBottomSheetViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/PlayerBottomSheetViewModel.java @@ -41,9 +41,9 @@ public class PlayerBottomSheetViewModel extends AndroidViewModel { public PlayerBottomSheetViewModel(@NonNull Application application) { super(application); - songRepository = new SongRepository(application); - artistRepository = new ArtistRepository(application); - queueRepository = new QueueRepository(application); + songRepository = new SongRepository(); + artistRepository = new ArtistRepository(); + queueRepository = new QueueRepository(); } public LiveData> getQueueSong() { @@ -62,7 +62,7 @@ public class PlayerBottomSheetViewModel extends AndroidViewModel { // TODO /* if (Preferences.isStarredSyncEnabled()) { DownloadUtil.getDownloadTracker(context).download( - MappingUtil.mapMediaItem(context, media, false), + MappingUtil.mapMediaItem(media, false), MappingUtil.mapDownload(media, null, null) ); } */ diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/PlaylistCatalogueViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/PlaylistCatalogueViewModel.java index 802c1fa1..11c0c55d 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/PlaylistCatalogueViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/PlaylistCatalogueViewModel.java @@ -28,8 +28,8 @@ public class PlaylistCatalogueViewModel extends AndroidViewModel { public PlaylistCatalogueViewModel(@NonNull Application application) { super(application); - playlistRepository = new PlaylistRepository(application); - downloadRepository = new DownloadRepository(application); + playlistRepository = new PlaylistRepository(); + downloadRepository = new DownloadRepository(); } public LiveData> getPlaylistList(LifecycleOwner owner) { diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/PlaylistChooserViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/PlaylistChooserViewModel.java index 390573c7..141a34fe 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/PlaylistChooserViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/PlaylistChooserViewModel.java @@ -25,7 +25,7 @@ public class PlaylistChooserViewModel extends AndroidViewModel { public PlaylistChooserViewModel(@NonNull Application application) { super(application); - playlistRepository = new PlaylistRepository(application); + playlistRepository = new PlaylistRepository(); } public LiveData> getPlaylistList(LifecycleOwner owner) { diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/PlaylistEditorViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/PlaylistEditorViewModel.java index 092a5700..6b20b9ec 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/PlaylistEditorViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/PlaylistEditorViewModel.java @@ -29,7 +29,7 @@ public class PlaylistEditorViewModel extends AndroidViewModel { public PlaylistEditorViewModel(@NonNull Application application) { super(application); - playlistRepository = new PlaylistRepository(application); + playlistRepository = new PlaylistRepository(); } public void createPlaylist(String name) { diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/PlaylistPageViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/PlaylistPageViewModel.java index 4b721644..52bbedd5 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/PlaylistPageViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/PlaylistPageViewModel.java @@ -28,8 +28,8 @@ public class PlaylistPageViewModel extends AndroidViewModel { public PlaylistPageViewModel(@NonNull Application application) { super(application); - playlistRepository = new PlaylistRepository(application); - downloadRepository = new DownloadRepository(application); + playlistRepository = new PlaylistRepository(); + downloadRepository = new DownloadRepository(); } public LiveData> getPlaylistSongLiveList(LifecycleOwner owner) { diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/PodcastBottomSheetViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/PodcastBottomSheetViewModel.java index 644bbe76..78b72e33 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/PodcastBottomSheetViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/PodcastBottomSheetViewModel.java @@ -16,7 +16,7 @@ public class PodcastBottomSheetViewModel extends AndroidViewModel { public PodcastBottomSheetViewModel(@NonNull Application application) { super(application); - podcastRepository = new PodcastRepository(application); + podcastRepository = new PodcastRepository(); } public PodcastEpisode getPodcast() { diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/RatingViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/RatingViewModel.java index 820cfae2..5659f1b9 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/RatingViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/RatingViewModel.java @@ -25,9 +25,9 @@ public class RatingViewModel extends AndroidViewModel { public RatingViewModel(@NonNull Application application) { super(application); - songRepository = new SongRepository(application); - albumRepository = new AlbumRepository(application); - artistRepository = new ArtistRepository(application); + songRepository = new SongRepository(); + albumRepository = new AlbumRepository(); + artistRepository = new ArtistRepository(); } public Child getSong() { diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/SearchViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/SearchViewModel.java index 35deca7a..ae489c86 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/SearchViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/SearchViewModel.java @@ -23,7 +23,7 @@ public class SearchViewModel extends AndroidViewModel { public SearchViewModel(@NonNull Application application) { super(application); - searchingRepository = new SearchingRepository(application); + searchingRepository = new SearchingRepository(); } public String getQuery() { diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/SettingViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/SettingViewModel.java index 23e1c4f0..08c43c4f 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/SettingViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/SettingViewModel.java @@ -16,7 +16,7 @@ public class SettingViewModel extends AndroidViewModel { public SettingViewModel(@NonNull Application application) { super(application); - scanRepository = new ScanRepository(application); + scanRepository = new ScanRepository(); } public void launchScan(ScanCallback callback) { diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/SongBottomSheetViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/SongBottomSheetViewModel.java index 6c0c27e2..c6fe13b3 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/SongBottomSheetViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/SongBottomSheetViewModel.java @@ -38,9 +38,9 @@ public class SongBottomSheetViewModel extends AndroidViewModel { public SongBottomSheetViewModel(@NonNull Application application) { super(application); - songRepository = new SongRepository(application); - albumRepository = new AlbumRepository(application); - artistRepository = new ArtistRepository(application); + songRepository = new SongRepository(); + albumRepository = new AlbumRepository(); + artistRepository = new ArtistRepository(); } public Child getSong() { @@ -61,7 +61,7 @@ public class SongBottomSheetViewModel extends AndroidViewModel { if (Preferences.isStarredSyncEnabled()) { DownloadUtil.getDownloadTracker(context).download( - MappingUtil.mapMediaItem(context, song, false), + MappingUtil.mapMediaItem(song, false), new Download(song) ); } diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/SongListPageViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/SongListPageViewModel.java index 87aca47c..43109841 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/SongListPageViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/SongListPageViewModel.java @@ -20,7 +20,6 @@ import com.cappielloantonio.play.subsonic.models.Genre; import java.util.ArrayList; import java.util.List; -import java.util.stream.Collectors; public class SongListPageViewModel extends AndroidViewModel { private final SongRepository songRepository; @@ -43,9 +42,9 @@ public class SongListPageViewModel extends AndroidViewModel { public SongListPageViewModel(@NonNull Application application) { super(application); - songRepository = new SongRepository(application); - artistRepository = new ArtistRepository(application); - downloadRepository = new DownloadRepository(application); + songRepository = new SongRepository(); + artistRepository = new ArtistRepository(); + downloadRepository = new DownloadRepository(); } public LiveData> getSongList(LifecycleOwner owner) { diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/StarredSyncViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/StarredSyncViewModel.java index ab874cdf..cbddc835 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/StarredSyncViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/StarredSyncViewModel.java @@ -21,7 +21,7 @@ public class StarredSyncViewModel extends AndroidViewModel { public StarredSyncViewModel(@NonNull Application application) { super(application); - songRepository = new SongRepository(application); + songRepository = new SongRepository(); } public LiveData> getStarredTracks(LifecycleOwner owner) { diff --git a/app/src/main/res/layout/item_horizontal_download.xml b/app/src/main/res/layout/item_horizontal_download.xml index fcb5149a..607a335f 100644 --- a/app/src/main/res/layout/item_horizontal_download.xml +++ b/app/src/main/res/layout/item_horizontal_download.xml @@ -35,7 +35,6 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:ellipsize="marquee" - android:paddingTop="6dp" android:paddingEnd="12dp" android:singleLine="true" android:text="@string/label_placeholder"