Spoiler-Free Chat Scenarios
A guide on how various chat scenarios are affected by Spoiler Prevention
Glossary
Message List- The list of spoiler free messagesUnsynchronized Message Queue- A sorted queue of messages that may contain spoilers. Will be checked periodically for eligible messages for synchronization (tMessage <= tClock)tClock- the current time of the synchronizing clocktMessage- the time of the synchronizing clock when message was sent
Spoiler Prevention Overview
Spoiler Prevention works by delaying messages from being displayed until the user has reached a tClock >= tMessage. Spoiler Prevention prioritizes hiding potential spoiler message over perfect message ordering - when loading history and/or receiving new messages the message list isn't guaranteed to be in order of tMessage.
- Loading Initial History - Messages in the initial history where tMessage <= tClock will be sorted and initialize the
Message List. Messages in the initial history where tMessage > tClock will be sorted into theUnsynchronized Message Queueand eventually be appended to theMessage List. - Loading More History - Similar to Loading Initial History - messages in the history where tMessage <= tClock will be sorted and prepended to the
Message List. Messages in the history where tMessage > tClock will be sorted into theUnsynchronized Message Queueand eventually be appended to theMessage List. - New Messages - New Messages will always be sorted into the
Unsynchronized Message Queue. When a message is eligible for synchronization (tMessage <= tClock) it will be appended to theMessage List.
Scenario 1 - Initial History Load
tClock = 15
Message List = []
- User requests initial history with tMessages = [0, 25, 10, 15, 20, 5, 30]
- Message list = [0, 5, 10, 15]
- Unsynchronized Message Queue = [20, 25, 30]
- User moves to tClock = 20
- Message list = [0, 5, 10, 15, 20]
- Unsynchronized Message Queue = [25, 30]
Scenario 2 - New Message with tMessage <= tClock
tClock = 20
Message List (tMessage) = [5, 10, 20]
- User receives new message with tMessage = 15.
- Message List = [5, 10, 20, 15]
- Unsynchronized Message Queue = []
Scenario 3 - New Message with tMessage > tClock
tClock = 15
Message List (tMessage) = [5, 10, 15]
- User receives new message with tMessage = 20
- Message List = [5, 10, 15]
- Unsynchronized Message Queue = [20]
- User moves to tClock = 20
- Message List = [5, 10, 15, 20]
- Unsynchronized Message Queue = []
Scenario 4 - Load More History with tClock in Range of tMessage
tClock = 15
Message List (tMessage) = [5, 10 ,15]
- User requests more history with tMessages = [0, 20, 25]
- Message List = [0, 5, 10, 15]
- Unsynchronized Message Queue = [20, 25]
- User moves to tClock = 20
- Message List = [0, 5, 10, 15, 20]
- Unsynchronized Message Queue = [25]
- User moves to tClock = 25
- Message List = [0, 5, 10, 15, 20, 25]
- Unsynchronized Message Queue = []
Scenario 5 - Load More History with tClock >= Min tMessage
tClock = 30
Message List (tMessage) = [10, 20 ,30]
- User requests more history with tMessages = [5, 15, 25]
- Message List = [5, 15, 25, 10, 20 ,30]
- Unsynchronized Message Queue = []
Scenario 6 - Load More History with tClock < Max tMessage
tClock = 15
Message List (tMessage) = [5, 10, 15]
- User requests more history with tMessages = [25, 20, 30]
- Message List = [5, 10, 15]
- Unsynchronized Message Queue = [20, 25, 30]
- User moves to tClock = 20
- Message List = [5, 10, 15, 20]
- Unsynchronized Message Queue = [25, 30]
- User moves to tClock = 25
- Message List = [5, 10, 15, 20, 25]
- Unsynchronized Message Queue = [30]
Updated about 1 month ago
