Skip to content

Commit

Permalink
Merge pull request #468 from thornbill/connectionmanagerrepository
Browse files Browse the repository at this point in the history
Refactor ConnectionManager intialization
  • Loading branch information
nielsvanvelzen committed May 2, 2020
2 parents 1f75353 + 4bad5ed commit 15887a6
Show file tree
Hide file tree
Showing 21 changed files with 230 additions and 226 deletions.
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

0 comments on commit 15887a6

Please sign in to comment.