Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor ConnectionManager intialization #468

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
39 changes: 7 additions & 32 deletions app/src/main/java/org/jellyfin/androidtv/TvApp.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@
import android.graphics.drawable.GradientDrawable;
import android.media.AudioManager;

import androidx.core.content.ContextCompat;
import androidx.palette.graphics.Palette;

import org.acra.ACRA;
import org.acra.annotation.AcraCore;
import org.acra.annotation.AcraDialog;
Expand All @@ -21,6 +24,7 @@
import org.jellyfin.androidtv.livetv.TvManager;
import org.jellyfin.androidtv.model.DisplayPriorityType;
import org.jellyfin.androidtv.model.LogonCredentials;
import org.jellyfin.androidtv.model.repository.ConnectionManagerRepository;
import org.jellyfin.androidtv.playback.ExternalPlayerActivity;
import org.jellyfin.androidtv.playback.MediaManager;
import org.jellyfin.androidtv.playback.PlaybackController;
Expand All @@ -32,26 +36,22 @@
import org.jellyfin.androidtv.preferences.enums.PreferredVideoPlayer;
import org.jellyfin.androidtv.search.SearchActivity;
import org.jellyfin.androidtv.util.Utils;
import org.jellyfin.apiclient.interaction.AndroidDevice;
import org.jellyfin.apiclient.interaction.ApiClient;
import org.jellyfin.apiclient.interaction.EmptyResponse;
import org.jellyfin.apiclient.interaction.IConnectionManager;
import org.jellyfin.apiclient.interaction.Response;
import org.jellyfin.apiclient.interaction.VolleyHttpClient;
import org.jellyfin.apiclient.logging.AndroidLogger;
import org.jellyfin.apiclient.model.configuration.ServerConfiguration;
import org.jellyfin.apiclient.model.dto.BaseItemDto;
import org.jellyfin.apiclient.model.dto.BaseItemType;
import org.jellyfin.apiclient.model.dto.UserDto;
import org.jellyfin.apiclient.model.entities.DisplayPreferences;
import org.jellyfin.apiclient.model.logging.ILogger;
import org.jellyfin.apiclient.model.serialization.GsonJsonSerializer;

import java.util.Calendar;
import java.util.HashMap;

import androidx.core.content.ContextCompat;
import androidx.palette.graphics.Palette;

@AcraCore(buildConfigClass = BuildConfig.class)
@AcraHttpSender(
uri = "https://collector.tracepot.com/a2eda9d9",
Expand All @@ -77,17 +77,14 @@ public class TvApp extends Application {
private static final String TAG = "Jellyfin-AndroidTV";

private ILogger logger;
private IConnectionManager connectionManager;
private PlaybackManager playbackManager;
private GsonJsonSerializer serializer;
private static TvApp app;
private UserDto currentUser;
private BaseItemDto currentPlayingItem;
private BaseItemDto lastPlayedItem;
private PlaybackController playbackController;
private ApiClient loginApiClient;
private AudioManager audioManager;
private VolleyHttpClient httpClient;

private int autoBitrate;
private String directItemId;
Expand Down Expand Up @@ -132,6 +129,7 @@ public void onCreate() {
logger = new AndroidLogger(TAG);
app = (TvApp) getApplicationContext();
audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
playbackManager = new PlaybackManager(new AndroidDevice(this), new AndroidLogger("PlaybackManager"));
setCurrentBackgroundGradient(new int[] {ContextCompat.getColor(this, R.color.lb_default_brand_color_dark), ContextCompat.getColor(this, R.color.lb_default_brand_color)});

registerActivityLifecycleCallbacks(new AuthenticatedUserCallbacks());
Expand All @@ -152,14 +150,6 @@ public void setLogger(ILogger value) {
logger = value;
}

public IConnectionManager getConnectionManager() {
return connectionManager;
}

public void setConnectionManager(IConnectionManager connectionManager) {
this.connectionManager = connectionManager;
}

public UserDto getCurrentUser() {
if (currentUser == null)
logger.Error("Called getCurrentUser() but value was null.");
Expand All @@ -173,15 +163,8 @@ public void setCurrentUser(UserDto currentUser) {
this.displayPrefsCache = new HashMap<>();
}

public GsonJsonSerializer getSerializer() {
return serializer;
}

public void setSerializer(GsonJsonSerializer serializer) {
this.serializer = serializer;
}

public ApiClient getApiClient() {
IConnectionManager connectionManager = ConnectionManagerRepository.Companion.getInstance(this).getConnectionManager();
return currentUser != null ? connectionManager.GetApiClient(currentUser) : null;
}

Expand Down Expand Up @@ -483,14 +466,6 @@ public void setLastDeletedItemId(String lastDeletedItemId) {
this.lastDeletedItemId = lastDeletedItemId;
}

public VolleyHttpClient getHttpClient() {
return httpClient;
}

public void setHttpClient(VolleyHttpClient httpClient) {
this.httpClient = httpClient;
}

public BaseItemDto getLastPlayedItem() {
return lastPlayedItem;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,23 @@

import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;

import androidx.leanback.widget.ArrayObjectAdapter;
import androidx.leanback.widget.HeaderItem;
import androidx.leanback.widget.ListRow;
import androidx.leanback.widget.OnItemViewClickedListener;
import androidx.leanback.widget.Presenter;
import androidx.leanback.widget.Row;
import androidx.leanback.widget.RowPresenter;
import android.widget.Toast;

import org.jellyfin.androidtv.R;
import org.jellyfin.androidtv.TvApp;
import org.jellyfin.androidtv.constants.Extras;
import org.jellyfin.androidtv.model.repository.SerializerRepository;
import org.jellyfin.androidtv.presentation.GridButtonPresenter;
import org.jellyfin.androidtv.ui.GridButton;

import org.jellyfin.apiclient.model.dto.BaseItemDto;

/**
* Created by Eric on 12/4/2014.
*/
public class BrowseFolderFragment extends StdBrowseFragment {

protected static final int BY_LETTER = 0;
Expand All @@ -34,7 +32,7 @@ public class BrowseFolderFragment extends StdBrowseFragment {

@Override
public void onActivityCreated(Bundle savedInstanceState) {
mFolder = TvApp.getApplication().getSerializer().DeserializeFromString(getActivity().getIntent().getStringExtra("Folder"),BaseItemDto.class);
mFolder = SerializerRepository.INSTANCE.getSerializer().DeserializeFromString(getActivity().getIntent().getStringExtra(Extras.Folder), BaseItemDto.class);
if (MainTitle == null) MainTitle = mFolder.getName();
ShowBadge = false;
if (mFolder.getCollectionType() != null) {
Expand Down Expand Up @@ -89,29 +87,29 @@ public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item,
switch (((GridButton) item).getId()) {
case BY_LETTER:
Intent intent = new Intent(getActivity(), ByLetterActivity.class);
intent.putExtra("Folder", TvApp.getApplication().getSerializer().SerializeToString(mFolder));
intent.putExtra("IncludeType", itemTypeString);
intent.putExtra(Extras.Folder, SerializerRepository.INSTANCE.getSerializer().SerializeToString(mFolder));
intent.putExtra(Extras.IncludeType, itemTypeString);

getActivity().startActivity(intent);
break;
case GENRES:
Intent genreIntent = new Intent(getActivity(), ByGenreActivity.class);
genreIntent.putExtra("Folder", TvApp.getApplication().getSerializer().SerializeToString(mFolder));
genreIntent.putExtra("IncludeType", itemTypeString);
genreIntent.putExtra(Extras.Folder, SerializerRepository.INSTANCE.getSerializer().SerializeToString(mFolder));
genreIntent.putExtra(Extras.IncludeType, itemTypeString);

getActivity().startActivity(genreIntent);
break;
case SUGGESTED:
Intent suggIntent = new Intent(getActivity(), SuggestedMoviesActivity.class);
suggIntent.putExtra("Folder", TvApp.getApplication().getSerializer().SerializeToString(mFolder));
suggIntent.putExtra("IncludeType", itemTypeString);
suggIntent.putExtra(Extras.Folder, SerializerRepository.INSTANCE.getSerializer().SerializeToString(mFolder));
suggIntent.putExtra(Extras.IncludeType, itemTypeString);

getActivity().startActivity(suggIntent);
break;
case PERSONS:
Intent personIntent = new Intent(getActivity(), BrowsePersonsActivity.class);
personIntent.putExtra("Folder", TvApp.getApplication().getSerializer().SerializeToString(mFolder));
personIntent.putExtra("IncludeType", itemTypeString);
personIntent.putExtra(Extras.Folder, SerializerRepository.INSTANCE.getSerializer().SerializeToString(mFolder));
personIntent.putExtra(Extras.IncludeType, itemTypeString);

getActivity().startActivity(personIntent);
break;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import android.os.Bundle;

import org.jellyfin.androidtv.TvApp;
import org.jellyfin.androidtv.constants.Extras;
import org.jellyfin.androidtv.model.ChangeTriggerType;
import org.jellyfin.androidtv.querying.StdItemQuery;

Expand Down Expand Up @@ -47,7 +48,7 @@ protected void setupQueries(IGridLoader gridLoader) {
case "music":
mAllowViewSelection = false;
//Special queries needed for album artists
String includeType = getActivity().getIntent().getStringExtra("IncludeType");
String includeType = getActivity().getIntent().getStringExtra(Extras.IncludeType);
if ("AlbumArtist".equals(includeType)) {
ArtistsQuery albumArtists = new ArtistsQuery();
albumArtists.setUserId(TvApp.getApplication().getCurrentUser().getId());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,14 @@
import android.os.Bundle;

import org.jellyfin.androidtv.TvApp;
import org.jellyfin.androidtv.constants.Extras;

/**
* Created by Eric on 1/18/2015.
*/
public class CustomViewFragment extends BrowseFolderFragment {
protected String includeType;

@Override
public void onActivityCreated(Bundle savedInstanceState) {
includeType = getActivity().getIntent().getStringExtra("IncludeType");
includeType = getActivity().getIntent().getStringExtra(Extras.IncludeType);
TvApp.getApplication().getLogger().Debug("Item type: %s", includeType);
showViews = false;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,20 @@
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.leanback.app.BackgroundManager;
import androidx.leanback.app.RowsSupportFragment;
import androidx.leanback.widget.ArrayObjectAdapter;
import androidx.leanback.widget.ClassPresenterSelector;
import androidx.leanback.widget.HeaderItem;
import androidx.leanback.widget.ListRow;
import androidx.leanback.widget.OnItemViewClickedListener;
import androidx.leanback.widget.OnItemViewSelectedListener;
import androidx.leanback.widget.Presenter;
import androidx.leanback.widget.Row;
import androidx.leanback.widget.RowPresenter;

import com.bumptech.glide.Glide;
import com.bumptech.glide.request.animation.GlideAnimation;
import com.bumptech.glide.request.target.SimpleTarget;
Expand All @@ -24,10 +38,12 @@
import org.jellyfin.androidtv.base.CustomMessage;
import org.jellyfin.androidtv.base.IKeyListener;
import org.jellyfin.androidtv.base.IMessageListener;
import org.jellyfin.androidtv.constants.Extras;
import org.jellyfin.androidtv.details.ItemListActivity;
import org.jellyfin.androidtv.itemhandling.BaseRowItem;
import org.jellyfin.androidtv.itemhandling.ItemLauncher;
import org.jellyfin.androidtv.itemhandling.ItemRowAdapter;
import org.jellyfin.androidtv.model.repository.SerializerRepository;
import org.jellyfin.androidtv.playback.MediaManager;
import org.jellyfin.androidtv.presentation.CardPresenter;
import org.jellyfin.androidtv.presentation.GridButtonPresenter;
Expand All @@ -49,20 +65,6 @@
import java.util.Timer;
import java.util.TimerTask;

import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.leanback.app.BackgroundManager;
import androidx.leanback.app.RowsSupportFragment;
import androidx.leanback.widget.ArrayObjectAdapter;
import androidx.leanback.widget.ClassPresenterSelector;
import androidx.leanback.widget.HeaderItem;
import androidx.leanback.widget.ListRow;
import androidx.leanback.widget.OnItemViewClickedListener;
import androidx.leanback.widget.OnItemViewSelectedListener;
import androidx.leanback.widget.Presenter;
import androidx.leanback.widget.Row;
import androidx.leanback.widget.RowPresenter;

public class EnhancedBrowseFragment extends Fragment implements IRowLoader {
private static final int BACKGROUND_UPDATE_DELAY = 100;
BaseActivity mActivity;
Expand Down Expand Up @@ -171,7 +173,7 @@ protected void setupQueries(IRowLoader rowLoader) {
}

protected void setupViews() {
mFolder = TvApp.getApplication().getSerializer().DeserializeFromString(getActivity().getIntent().getStringExtra("Folder"),BaseItemDto.class);
mFolder = SerializerRepository.INSTANCE.getSerializer().DeserializeFromString(getActivity().getIntent().getStringExtra(Extras.Folder), BaseItemDto.class);
if (mFolder == null) return;

if (mFolder.getCollectionType() != null) {
Expand Down Expand Up @@ -411,7 +413,7 @@ public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item,
@Override
public void onResponse(DisplayPreferences response) {
Intent folderIntent = new Intent(getActivity(), GenericGridActivity.class);
folderIntent.putExtra("Folder", TvApp.getApplication().getSerializer().SerializeToString(mFolder));
folderIntent.putExtra(Extras.Folder, SerializerRepository.INSTANCE.getSerializer().SerializeToString(mFolder));
getActivity().startActivity(folderIntent);
}
});
Expand All @@ -423,8 +425,8 @@ public void onResponse(DisplayPreferences response) {
@Override
public void onResponse(DisplayPreferences response) {
Intent folderIntent = new Intent(getActivity(), GenericGridActivity.class);
folderIntent.putExtra("Folder", TvApp.getApplication().getSerializer().SerializeToString(mFolder));
folderIntent.putExtra("IncludeType", "MusicAlbum");
folderIntent.putExtra(Extras.Folder, SerializerRepository.INSTANCE.getSerializer().SerializeToString(mFolder));
folderIntent.putExtra(Extras.IncludeType, "MusicAlbum");
getActivity().startActivity(folderIntent);
}
});
Expand All @@ -436,41 +438,41 @@ public void onResponse(DisplayPreferences response) {
@Override
public void onResponse(DisplayPreferences response) {
Intent folderIntent = new Intent(getActivity(), GenericGridActivity.class);
folderIntent.putExtra("Folder", TvApp.getApplication().getSerializer().SerializeToString(mFolder));
folderIntent.putExtra("IncludeType", "AlbumArtist");
folderIntent.putExtra(Extras.Folder, SerializerRepository.INSTANCE.getSerializer().SerializeToString(mFolder));
folderIntent.putExtra(Extras.IncludeType, "AlbumArtist");
getActivity().startActivity(folderIntent);
}
});
break;

case BY_LETTER:
Intent intent = new Intent(getActivity(), ByLetterActivity.class);
intent.putExtra("Folder", TvApp.getApplication().getSerializer().SerializeToString(mFolder));
intent.putExtra("IncludeType", itemTypeString);
intent.putExtra(Extras.Folder, SerializerRepository.INSTANCE.getSerializer().SerializeToString(mFolder));
intent.putExtra(Extras.IncludeType, itemTypeString);

getActivity().startActivity(intent);
break;

case GENRES:
Intent genreIntent = new Intent(getActivity(), ByGenreActivity.class);
genreIntent.putExtra("Folder", TvApp.getApplication().getSerializer().SerializeToString(mFolder));
genreIntent.putExtra("IncludeType", itemTypeString);
genreIntent.putExtra(Extras.Folder, SerializerRepository.INSTANCE.getSerializer().SerializeToString(mFolder));
genreIntent.putExtra(Extras.IncludeType, itemTypeString);

getActivity().startActivity(genreIntent);
break;

case SUGGESTED:
Intent suggIntent = new Intent(getActivity(), SuggestedMoviesActivity.class);
suggIntent.putExtra("Folder", TvApp.getApplication().getSerializer().SerializeToString(mFolder));
suggIntent.putExtra("IncludeType", itemTypeString);
suggIntent.putExtra(Extras.Folder, SerializerRepository.INSTANCE.getSerializer().SerializeToString(mFolder));
suggIntent.putExtra(Extras.IncludeType, itemTypeString);

getActivity().startActivity(suggIntent);
break;

case PERSONS:
Intent personIntent = new Intent(getActivity(), BrowsePersonsActivity.class);
personIntent.putExtra("Folder", TvApp.getApplication().getSerializer().SerializeToString(mFolder));
personIntent.putExtra("IncludeType", itemTypeString);
personIntent.putExtra(Extras.Folder, SerializerRepository.INSTANCE.getSerializer().SerializeToString(mFolder));
personIntent.putExtra(Extras.IncludeType, itemTypeString);

getActivity().startActivity(personIntent);
break;
Expand All @@ -494,7 +496,7 @@ public void onResponse(DisplayPreferences response) {
seriesTimers.setId("SERIESTIMERS");
seriesTimers.setCollectionType("SeriesTimers");
seriesTimers.setName(mActivity.getString(R.string.lbl_series_recordings));
seriesIntent.putExtra("Folder", TvApp.getApplication().getSerializer().SerializeToString(seriesTimers));
seriesIntent.putExtra(Extras.Folder, SerializerRepository.INSTANCE.getSerializer().SerializeToString(seriesTimers));

getActivity().startActivity(seriesIntent);
break;
Expand All @@ -510,7 +512,7 @@ public void onResponse(DisplayPreferences response) {
BaseItemDto folder = new BaseItemDto();
folder.setId("");
folder.setName(TvApp.getApplication().getResources().getString(R.string.lbl_recorded_tv));
recordings.putExtra("Folder", TvApp.getApplication().getSerializer().SerializeToString(folder));
recordings.putExtra(Extras.Folder, SerializerRepository.INSTANCE.getSerializer().SerializeToString(folder));
mActivity.startActivity(recordings);
break;

Expand Down