private void onRebroadcastResponse( boolean successful, Broadcast result, VolleyError error, RebroadcastState state) { if (successful) { if (!state.rebroadcast) { // Delete the rebroadcast broadcast by user. Must be done before we update the // broadcast so that we can retrieve rebroadcastId for the old one. // This will not finish this activity, because this activity displays the // rebroadcasted broadcast instead of the rebroadcast broadcast itself, and this is // the desired behavior since it won't surprise user, and user can have the chance // to undo it. Broadcast broadcast = mBroadcastAdapter.getBroadcast(); if (broadcast != null && broadcast.rebroadcastId != null) { EventBus.getDefault().post(new BroadcastDeletedEvent(broadcast.rebroadcastId)); } } EventBus.getDefault().post(new BroadcastUpdatedEvent(result)); ToastUtils.show( state.rebroadcast ? R.string.broadcast_rebroadcast_successful : R.string.broadcast_unrebroadcast_successful, this); } else { LogUtils.e(error.toString()); Broadcast broadcast = mBroadcastAdapter.getBroadcast(); if (broadcast != null) { boolean notified = false; if (error instanceof ApiError) { // Correct our local state if needed. ApiError apiError = (ApiError) error; Boolean shouldBeRebroadcasted = null; if (apiError.code == Codes.RebroadcastBroadcast.ALREADY_REBROADCASTED) { shouldBeRebroadcasted = true; } else if (apiError.code == Codes.RebroadcastBroadcast.NOT_REBROADCASTED_YET) { shouldBeRebroadcasted = false; } if (shouldBeRebroadcasted != null) { broadcast.fixRebroacasted(shouldBeRebroadcasted); EventBus.getDefault().post(new BroadcastUpdatedEvent(broadcast)); notified = true; } } if (!notified) { // Must notify changed to reset pending status so that off-screen // items will be invalidated. mBroadcastAdapter.notifyBroadcastChanged(); } } ToastUtils.show( getString( state.rebroadcast ? R.string.broadcast_rebroadcast_failed_format : R.string.broadcast_unrebroadcast_failed_format, ApiError.getErrorString(error, this)), this); } }
private void onDeleteBroadcastResponse(boolean successful, Broadcast result, VolleyError error) { if (successful) { ToastUtils.show(R.string.broadcast_delete_successful, this); EventBus.getDefault().post(new BroadcastDeletedEvent(mBroadcastId)); finish(); } else { LogUtils.e(error.toString()); ToastUtils.show( getString(R.string.broadcast_delete_failed_format, ApiError.getErrorString(error, this)), this); } }
@Override public void onComment() { if (canSendComment()) { ImeUtils.showIme(mCommentEdit); } else { ToastUtils.show(R.string.broadcast_send_comment_disabled, this); } }
private void onLikeResponse( boolean successful, Broadcast result, VolleyError error, LikeState state) { if (successful) { EventBus.getDefault().post(new BroadcastUpdatedEvent(result)); ToastUtils.show( state.like ? R.string.broadcast_like_successful : R.string.broadcast_unlike_successful, this); } else { LogUtils.e(error.toString()); Broadcast broadcast = mBroadcastAdapter.getBroadcast(); if (broadcast != null) { boolean notified = false; if (error instanceof ApiError) { // Correct our local state if needed. ApiError apiError = (ApiError) error; Boolean shouldBeLiked = null; if (apiError.code == Codes.LikeBroadcast.ALREADY_LIKED) { shouldBeLiked = true; } else if (apiError.code == Codes.LikeBroadcast.NOT_LIKED_YET) { shouldBeLiked = false; } if (shouldBeLiked != null) { broadcast.fixLiked(shouldBeLiked); EventBus.getDefault().post(new BroadcastUpdatedEvent(broadcast)); notified = true; } } if (!notified) { // Must notify changed to reset pending status so that off-screen // items will be invalidated. mBroadcastAdapter.notifyBroadcastChanged(); } } ToastUtils.show( getString( state.like ? R.string.broadcast_like_failed_format : R.string.broadcast_unlike_failed_format, ApiError.getErrorString(error, this)), this); } }
private void copyText() { Broadcast broadcast = mBroadcastAdapter.getBroadcast(); if (broadcast == null) { ToastUtils.show(R.string.broadcast_copy_text_not_loaded, this); return; } ClipboardUtils.copyText(broadcast.getClipboradLabel(), broadcast.getClipboardText(this), this); }
private void onSendComment() { String comment = mCommentEdit.getText().toString(); if (TextUtils.isEmpty(comment)) { ToastUtils.show(R.string.broadcast_send_comment_error_empty, this); return; } sendComment(comment); }
private void onDeleteCommentResponse( boolean successful, Boolean result, VolleyError error, DeleteCommentState state) { if (successful) { ToastUtils.show(R.string.broadcast_comment_delete_successful, this); EventBus.getDefault().post(new BroadcastCommentDeletedEvent(mBroadcastId, state.commentId)); if (mBroadcastAdapter.hasBroadcast()) { Broadcast broadcast = mBroadcastAdapter.getBroadcast(); --broadcast.commentCount; EventBus.getDefault().post(new BroadcastUpdatedEvent(broadcast)); } } else { LogUtils.e(error.toString()); ToastUtils.show( getString( R.string.broadcast_comment_delete_failed_format, ApiError.getErrorString(error, this)), this); } }
private void onSendCommentResponse(boolean successful, Comment result, VolleyError error) { if (successful) { if (!mCanLoadMoreComments) { mCommentAdapter.add(result); fixCommentCount(); } else { ToastUtils.show(R.string.broadcast_send_comment_successful, this); } mBroadcastCommentList.scrollToPosition(mAdapter.getItemCount() - 1); mCommentEdit.setText(null); } else { LogUtils.e(error.toString()); ToastUtils.show( getString( R.string.broadcast_send_comment_failed_format, ApiError.getErrorString(error, this)), this); } setSendingComment(false); }
@Override public boolean onLike(boolean like) { if (mBroadcastAdapter.hasBroadcast() && mBroadcastAdapter.getBroadcast().author.id == AccountUtils.getUserId(this)) { ToastUtils.show(R.string.broadcast_like_error_cannot_like_oneself, this); return false; } ApiRequest<Broadcast> request = ApiRequests.newLikeBroadcastRequest(mBroadcastId, like, this); LikeState state = new LikeState(like); RequestFragment.startRequest(REQUEST_CODE_LIKE, request, state, this); return true; }
@Override public boolean onRebroadcast(boolean rebroadcast) { if (mBroadcastAdapter.hasBroadcast() && mBroadcastAdapter.getBroadcast().author.id == AccountUtils.getUserId(this)) { ToastUtils.show(R.string.broadcast_rebroadcast_error_cannot_rebroadcast_oneself, this); return false; } ApiRequest<Broadcast> request = ApiRequests.newRebroadcastBroadcastRequest(mBroadcastId, rebroadcast, this); RebroadcastState state = new RebroadcastState(rebroadcast); RequestFragment.startRequest(REQUEST_CODE_REBROADCAST, request, state, this); return true; }
private void onLoadBroadcastResponse( boolean successful, Broadcast result, VolleyError error, LoadBroadcastState state) { if (successful) { setBroadcast(result); } else { LogUtils.e(error.toString()); ToastUtils.show(ApiError.getErrorString(error, this), this); } setBroadcastRefreshing(false); mLoadingBroadcastOrCommentList = false; if (successful && state.loadCommentList) { loadCommentList(false); } }
private void onLoadCommentListResponse( boolean successful, CommentList result, VolleyError error, LoadCommentListState state) { if (successful) { List<Comment> commentList = result.comments; mCanLoadMoreComments = commentList.size() == state.count; if (state.loadMore) { mCommentAdapter.addAll(commentList); } else { mCommentAdapter.replace(commentList); } } else { LogUtils.e(error.toString()); ToastUtils.show(ApiError.getErrorString(error, this), this); } setCommentsRefreshing(false, state.loadMore); mLoadingBroadcastOrCommentList = false; if (successful) { fixCommentCount(); } }