Search in sources :

Example 1 with RequestSongCallback

use of me.echeung.listenmoeapi.callbacks.RequestSongCallback in project android-app by LISTEN-moe.

the class SongActionsUtil method request.

/**
 * Requests a song.
 *
 * @param song The song to request.
 */
public static void request(final Activity activity, final RecyclerView.Adapter adapter, final Song song) {
    final int requests = App.getUserViewModel().getUser().getRequestsRemaining();
    App.getApiClient().requestSong(String.valueOf(song.getId()), new RequestSongCallback() {

        @Override
        public void onSuccess() {
            if (activity == null)
                return;
            activity.runOnUiThread(() -> {
                adapter.notifyDataSetChanged();
                // Broadcast event
                final Intent reqEvent = new Intent(SongActionsUtil.REQUEST_EVENT);
                activity.sendBroadcast(reqEvent);
                // Instantly update remaining requests number to appear responsive
                final int remainingRequests = requests - 1;
                App.getUserViewModel().setRequestsRemaining(remainingRequests);
                final String toastMsg = App.getPreferenceUtil().shouldShowRandomRequestTitle() ? activity.getString(R.string.requested_song, song.toString()) : activity.getString(R.string.requested_random_song);
                Toast.makeText(activity.getApplicationContext(), toastMsg, Toast.LENGTH_LONG).show();
            });
        }

        @Override
        public void onFailure(final String message) {
            if (activity == null)
                return;
            activity.runOnUiThread(() -> Toast.makeText(activity.getApplicationContext(), message, Toast.LENGTH_SHORT).show());
        }
    });
}
Also used : RequestSongCallback(me.echeung.listenmoeapi.callbacks.RequestSongCallback) Intent(android.content.Intent)

Aggregations

Intent (android.content.Intent)1 RequestSongCallback (me.echeung.listenmoeapi.callbacks.RequestSongCallback)1