/*
* Copyright (c) 2016 Zhang Hai <Dreaming.in.Code.ZH@Gmail.com>
* All Rights Reserved.
*/
package me.zhanghai.android.douya.broadcast.content;
import android.content.Context;
import me.zhanghai.android.douya.R;
import me.zhanghai.android.douya.content.ResourceWriterManager;
import me.zhanghai.android.douya.network.api.info.apiv2.Broadcast;
import me.zhanghai.android.douya.util.ToastUtils;
public class RebroadcastBroadcastManager extends ResourceWriterManager<RebroadcastBroadcastWriter> {
private static class InstanceHolder {
public static final RebroadcastBroadcastManager VALUE = new RebroadcastBroadcastManager();
}
public static RebroadcastBroadcastManager getInstance() {
return InstanceHolder.VALUE;
}
/**
* @deprecated Use {@link #write(Broadcast, boolean, Context)} instead.
*/
public void write(long broadcastId, boolean rebroadcast, Context context) {
add(new RebroadcastBroadcastWriter(broadcastId, rebroadcast, this), context);
}
public boolean write(Broadcast broadcast, boolean rebroadcast, Context context) {
if (shouldWrite(broadcast, context)) {
add(new RebroadcastBroadcastWriter(broadcast, rebroadcast, this), context);
return true;
} else {
return false;
}
}
private boolean shouldWrite(Broadcast broadcast, Context context) {
if (broadcast.isAuthorOneself(context)) {
ToastUtils.show(R.string.broadcast_rebroadcast_error_cannot_rebroadcast_oneself,
context);
return false;
} else {
return true;
}
}
public boolean isWriting(long broadcastId) {
return findWriter(broadcastId) != null;
}
public boolean isWritingRebroadcast(long broadcastId) {
RebroadcastBroadcastWriter writer = findWriter(broadcastId);
return writer != null && writer.isRebroadcast();
}
private RebroadcastBroadcastWriter findWriter(long broadcastId) {
for (RebroadcastBroadcastWriter writer : getWriters()) {
if (writer.getBroadcastId() == broadcastId) {
return writer;
}
}
return null;
}
}