Skip to content

Commit

Permalink
Refactor chat manager to remove static variables
Browse files Browse the repository at this point in the history
These static variables have caused a lot of issues with VOD chat so I think it is better to ensure the chat created first.
  • Loading branch information
samfundev committed Jan 20, 2024
1 parent 268be85 commit 8d76aa0
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -74,15 +74,15 @@ protected void onCreate(Bundle savedInstanceState) {

// If the Fragment is non-null, then it is currently being
// retained across a configuration change.
if (mStreamFragment == null) {
mStreamFragment = StreamFragment.newInstance(getStreamArguments());
fm.beginTransaction().replace(getVideoContainerResource(), mStreamFragment, getString(R.string.stream_fragment_tag)).commit();
}

if (mChatFragment == null) {
mChatFragment = ChatFragment.getInstance(getStreamArguments());
fm.beginTransaction().replace(R.id.chat_fragment, mChatFragment).commit();
}

if (mStreamFragment == null) {
mStreamFragment = StreamFragment.newInstance(getStreamArguments());
fm.beginTransaction().replace(getVideoContainerResource(), mStreamFragment, getString(R.string.stream_fragment_tag)).commit();
}
}

settings = new Settings(this);
Expand Down
23 changes: 11 additions & 12 deletions app/src/main/java/com/perflyst/twire/chat/ChatManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,10 @@ public class ChatManager implements Runnable {
public static ChatManager instance = null;

public static ImmutableSetMultimap<String, Badge> ffzBadgeMap;
private static double currentProgress = -1;
private static String cursor = "";
private static boolean seek = false;
private static double previousProgress;
private double currentProgress = -1;
private String cursor = "";
private boolean seek = false;
private double previousProgress;
private final String LOG_TAG = getClass().getSimpleName();
private final String user;
private final String password;
Expand Down Expand Up @@ -118,27 +118,26 @@ public ChatManager(Context aContext, UserInfo aChannel, String aVodId, ChatCallb
nextCommentOffset = 0;
}

public static void updateVodProgress(long aCurrentProgress, boolean aSeek) {
public void updateVodProgress(long aCurrentProgress, boolean aSeek) {
currentProgress = aCurrentProgress / 1000f;
seek |= aSeek;

if (instance == null) return;

// Only notify the thread when there's work to do.
if (!aSeek && currentProgress < instance.nextCommentOffset) return;
if (!aSeek && currentProgress < nextCommentOffset) return;

synchronized (instance.vodLock) {
instance.vodLock.notify();
synchronized (vodLock) {
vodLock.notify();
}
}

public static void setPreviousProgress() {
public void setPreviousProgress() {
previousProgress = currentProgress;
cursor = "";
}

@Override
public void run() {
isStopping = false;
Log.d(LOG_TAG, "Trying to start chat " + channel.getLogin() + " for user " + user);
mEmoteManager.loadCustomEmotes(() -> onUpdate(UpdateType.ON_CUSTOM_EMOTES_FETCHED));

Expand Down Expand Up @@ -268,7 +267,7 @@ private VODComment(double contentOffset, JSONObject data) {
}

private void processVodChat() {
try {
try {
onUpdate(UpdateType.ON_CONNECTED);

// Make sure that current progress has been set.
Expand Down
12 changes: 7 additions & 5 deletions app/src/main/java/com/perflyst/twire/fragments/ChatFragment.java
Original file line number Diff line number Diff line change
Expand Up @@ -192,12 +192,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container,
setupKeyboardShowListener();

setupTransition();
return mRootView;
}

@Override
public void onStart() {
super.onStart();
chatManager = new ChatManager(getContext(), mUserInfo, vodID, new ChatManager.ChatCallback()
{
private boolean connected = false;
Expand Down Expand Up @@ -301,6 +296,13 @@ private void roomStateIconChange(boolean isOn, ImageView icon) {
}
});

return mRootView;
}

@Override
public void onStart() {
super.onStart();

TwireApplication.backgroundPoster.post(chatManager);

if (supportedTextEmotes == null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ public class StreamFragment extends Fragment implements Player.Listener {
public void run() {
if (player == null) return;

ChatManager.updateVodProgress(player.getCurrentPosition(), false);
ChatManager.instance.updateVodProgress(player.getCurrentPosition(), false);

if (player.isPlaying()) vodHandler.postDelayed(this, 1000);
}
Expand Down Expand Up @@ -644,7 +644,7 @@ public void onPositionDiscontinuity(@NonNull Player.PositionInfo oldPosition, @N
// A seek is when we've gone backwards or we go more than 10 seconds forward.
boolean seek = oldMs > newMs || newMs - oldMs > 10000;
if (seek) streamFragmentCallback.onSeek();
ChatManager.updateVodProgress(newMs, seek);
ChatManager.instance.updateVodProgress(newMs, seek);
}

@Override
Expand Down Expand Up @@ -750,7 +750,7 @@ public void onPause() {
releasePlayer();
}

ChatManager.setPreviousProgress();
ChatManager.instance.setPreviousProgress();
}

@Override
Expand Down

0 comments on commit 8d76aa0

Please sign in to comment.