package com.marverenic.music.adapter; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.provider.Settings; import android.support.design.widget.Snackbar; import android.view.View; import com.marverenic.music.BuildConfig; import com.marverenic.music.JockeyApplication; import com.marverenic.music.R; import com.marverenic.music.data.store.MediaStoreUtil; import com.marverenic.music.data.store.MusicStore; import com.marverenic.music.data.store.PlaylistStore; import javax.inject.Inject; import rx.Observable; import timber.log.Timber; import static android.support.design.widget.Snackbar.LENGTH_SHORT; public class LibraryEmptyState extends BasicEmptyState { private Activity mActivity; @Inject MusicStore mMusicStore; @Inject PlaylistStore mPlaylistStore; public LibraryEmptyState(Activity activity) { mActivity = activity; JockeyApplication.getComponent(activity).inject(this); } public String getEmptyMessage() { return mActivity.getString(R.string.empty); } @Override public final String getMessage() { if (MediaStoreUtil.hasPermission(mActivity)) { return getEmptyMessage(); } else { return mActivity.getString(R.string.empty_no_permission); } } public String getEmptyMessageDetail() { return mActivity.getString(R.string.empty_detail); } @Override public final String getDetail() { if (MediaStoreUtil.hasPermission(mActivity)) { return getEmptyMessageDetail(); } else { return mActivity.getString(R.string.empty_no_permission_detail); } } public String getEmptyAction1Label() { return mActivity.getString(R.string.action_refresh); } @Override public final String getAction1Label() { if (MediaStoreUtil.hasPermission(mActivity)) { return getEmptyAction1Label(); } else { return mActivity.getString(R.string.action_try_again); } } public String getEmptyAction2Label() { return super.getAction2Label(); } @Override public final String getAction2Label() { if (MediaStoreUtil.hasPermission(mActivity)) { return getEmptyAction2Label(); } else { return mActivity.getString(R.string.action_open_settings); } } @Override public void onAction1() { Observable<Boolean> musicStoreResult = mMusicStore.refresh(); Observable<Boolean> playlistStoreResult = mPlaylistStore.refresh(); Observable<Boolean> combinedResult = Observable.combineLatest( musicStoreResult, playlistStoreResult, (result1, result2) -> result1 && result2); combinedResult.take(1) .subscribe(successful -> { if (successful) { View container = mActivity.findViewById(R.id.library_page_list); Snackbar.make(container, R.string.confirm_refresh_library, LENGTH_SHORT) .show(); } }, throwable -> { Timber.e(throwable, "Failed to refresh library"); }); } @Override public void onAction2() { if (!MediaStoreUtil.hasPermission(mActivity)) { Intent intent = new Intent(); intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); Uri uri = Uri.fromParts("package", BuildConfig.APPLICATION_ID, null); intent.setData(uri); mActivity.startActivity(intent); } } }