Skip to content

Commit

Permalink
Rename the timeline events to match data structures (river) (#1926)
Browse files Browse the repository at this point in the history
get rid of old room names
  • Loading branch information
texuf authored Dec 30, 2024
1 parent 0b825c9 commit a86dfe8
Show file tree
Hide file tree
Showing 10 changed files with 123 additions and 121 deletions.
2 changes: 1 addition & 1 deletion packages/docs/sdk/react-sdk/api/useTimeline.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import { RiverTimelineEvent } from '@river-build/sdk'
const { data: events } = useTimeline(streamId)

// You can filter the events by their kind
const messages = events.filter((event) => event.content?.kind === RiverTimelineEvent.RoomMessage)
const messages = events.filter((event) => event.content?.kind === RiverTimelineEvent.ChannelMessage)
```

## Definition
Expand Down
4 changes: 2 additions & 2 deletions packages/docs/sdk/react-sdk/getting-started.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -271,10 +271,10 @@ function ChatMessages({ channelId }: { channelId: string }) {
<div>
{/* Filter out non-message events */}
{events
?.filter((event) => event.content?.kind === RiverTimelineEvent.RoomMessage)
?.filter((event) => event.content?.kind === RiverTimelineEvent.ChannelMessage)
.map((message) => (
<p key={message.eventId}>
{message.content?.kind === RiverTimelineEvent.RoomMessage
{message.content?.kind === RiverTimelineEvent.ChannelMessage
? message.content?.body
: ''}
</p>
Expand Down
9 changes: 5 additions & 4 deletions packages/playground/src/components/blocks/timeline.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ export const Timeline = ({ streamId, showThreadMessages, threads, events }: Time
</Button>
)}
{events.map((event) => {
if (event.content?.kind === RiverTimelineEvent.RoomMessage) {
if (event.content?.kind === RiverTimelineEvent.ChannelMessage) {
if (showThreadMessages || !event.threadParentId) {
return (
<Message
Expand All @@ -92,8 +92,9 @@ export const Timeline = ({ streamId, showThreadMessages, threads, events }: Time
return null
}
if (
event.content?.kind === RiverTimelineEvent.RoomMessageEncrypted ||
event.content?.kind === RiverTimelineEvent.RoomMessageEncryptedWithRef
event.content?.kind === RiverTimelineEvent.ChannelMessageEncrypted ||
event.content?.kind ===
RiverTimelineEvent.ChannelMessageEncryptedWithRef
) {
return <EncryptedMessage key={event.eventId} />
}
Expand Down Expand Up @@ -183,7 +184,7 @@ const Message = ({
</span>
</div>
<span>
{event.content?.kind === RiverTimelineEvent.RoomMessage
{event.content?.kind === RiverTimelineEvent.ChannelMessage
? event.content.body
: ''}
</span>
Expand Down
2 changes: 1 addition & 1 deletion packages/react-sdk/src/useTimeline.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import { useSyncAgent } from './useSyncAgent'
* const { data: events } = useTimeline(streamId)
*
* // You can filter the events by their kind
* const messages = events.filter((event) => event.content?.kind === RiverTimelineEvent.RoomMessage)
* const messages = events.filter((event) => event.content?.kind === RiverTimelineEvent.ChannelMessage)
* ```
*
* @param streamId - The id of the stream to get the timeline events from.
Expand Down
6 changes: 3 additions & 3 deletions packages/sdk/src/sync-agent/timeline/models/threadStats.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Observable } from '../../../observable/observable'
import { RiverTimelineEvent, TimelineEvent, ThreadStatsData } from './timeline-types'
import { getMessageSenderId, getRoomMessageContent } from './timelineEvent'
import { getMessageSenderId, getChannelMessageContent } from './timelineEvent'

// eventId -> threadStats
export type ThreadStatsMap = Record<string, ThreadStatsData>
Expand Down Expand Up @@ -45,7 +45,7 @@ export class ThreadStats extends Observable<ThreadStatsMap> {
[event.eventId]: {
...current[event.eventId],
parentEvent: event,
parentMessageContent: getRoomMessageContent(event),
parentMessageContent: getChannelMessageContent(event),
isParticipating:
this.value?.[event.eventId]?.isParticipating ||
(event.content?.kind !== RiverTimelineEvent.RedactedEvent &&
Expand Down Expand Up @@ -112,7 +112,7 @@ function makeNewThreadStats(
latestTs: event.createdAtEpochMs,
parentId,
parentEvent: parent,
parentMessageContent: getRoomMessageContent(parent),
parentMessageContent: getChannelMessageContent(parent),
isParticipating: false,
}
}
91 changes: 45 additions & 46 deletions packages/sdk/src/sync-agent/timeline/models/timeline-types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,21 +64,23 @@ export interface TimelineEvent {
/// a timeline event should have one or none of the following fields set
export type TimelineEvent_OneOf =
| ChannelCreateEvent
| ChannelMessageEncryptedEvent
| ChannelMessageEncryptedRefEvent
| ChannelMessageEvent
| ChannelMessageMissingEvent
| ChannelPropertiesEvent
| FulfillmentEvent
| InceptionEvent
| KeySolicitationEvent
| MiniblockHeaderEvent
| MemberBlockchainTransactionEvent
| MlsEvent
| PinEvent
| ReactionEvent
| RedactedEvent
| RedactionActionEvent
| RoomCreateEvent
| RoomMemberEvent
| RoomMessageEncryptedEvent
| RoomMessageEncryptedRefEvent
| RoomMessageEvent
| RoomMessageMissingEvent
| RoomPropertiesEvent // TODO: maybe change this to ChannelPropertiesEvent (?)
| StreamEncryptionAlgorithmEvent
| StreamMembershipEvent
| SpaceDisplayNameEvent
| SpaceEnsAddressEvent
| SpaceImageEvent
Expand All @@ -89,39 +91,36 @@ export type TimelineEvent_OneOf =
| UserBlockchainTransactionEvent
| UserReceivedBlockchainTransactionEvent
| UnpinEvent
| MlsEvent
| StreamEncryptionAlgorithmEvent

export enum RiverTimelineEvent {
MiniblockHeader = 'm.miniblockheader',
Reaction = 'm.reaction',
ChannelCreate = 'm.channel.create',
ChannelMessage = 'm.channel.message',
ChannelMessageEncrypted = 'm.channel.encrypted',
ChannelMessageEncryptedWithRef = 'm.channel.encrypted_with_ref',
ChannelMessageMissing = 'm.channel.missing',
ChannelProperties = 'm.channel.properties',
Fulfillment = 'm.fulfillment',
Inception = 'm.inception', // TODO: would be great to name this after space / channel name
KeySolicitation = 'm.key_solicitation',
MemberBlockchainTransaction = 'm.member_blockchain_transaction',
MiniblockHeader = 'm.miniblockheader',
Mls = 'm.mls',
Pin = 'm.pin',
Reaction = 'm.reaction',
RedactedEvent = 'm.redacted_event',
RedactionActionEvent = 'm.redaction_action',
RoomCreate = 'm.room.create', // TODO: would be great to name this after space / channel name
RoomJoinRules = 'm.room.join_rules',
RoomMember = 'm.room.member',
RoomMessage = 'm.room.message',
RoomMessageEncrypted = 'm.room.encrypted',
RoomMessageEncryptedWithRef = 'm.room.encrypted_with_ref',
RoomMessageMissing = 'm.room.missing',
RoomProperties = 'm.room.properties',
ChannelCreate = 'm.channel.create',
SpaceUpdateAutojoin = 'm.space.update_autojoin',
SpaceUpdateHideUserJoinLeaves = 'm.space.update_channel_hide_user_join_leaves',
SpaceImage = 'm.space.image',
SpaceUsername = 'm.space.username',
SpaceDisplayName = 'm.space.display_name',
SpaceEnsAddress = 'm.space.ens_name',
SpaceNft = 'm.space.nft',
StreamEncryptionAlgorithm = 'm.stream_encryption_algorithm',
StreamMembership = 'm.stream_membership',
Unpin = 'm.unpin',
UserBlockchainTransaction = 'm.user_blockchain_transaction',
UserReceivedBlockchainTransaction = 'm.user_received_blockchain_transaction',
Mls = 'm.mls',
StreamEncryptionAlgorithm = 'm.stream_encryption_algorithm',
}

export interface MiniblockHeaderEvent {
Expand All @@ -144,8 +143,8 @@ export interface KeySolicitationEvent {
isNewDevice: boolean
}

export interface RoomCreateEvent {
kind: RiverTimelineEvent.RoomCreate
export interface InceptionEvent {
kind: RiverTimelineEvent.Inception
creatorId: string
type?: PayloadCaseType
spaceId?: string // valid on casablanca channel streams
Expand Down Expand Up @@ -228,23 +227,23 @@ export interface StreamEncryptionAlgorithmEvent {
algorithm?: string
}

export interface RoomMessageEncryptedEvent {
kind: RiverTimelineEvent.RoomMessageEncrypted
export interface ChannelMessageEncryptedEvent {
kind: RiverTimelineEvent.ChannelMessageEncrypted
error?: DecryptionSessionError
}

export interface RoomMessageEncryptedRefEvent {
kind: RiverTimelineEvent.RoomMessageEncryptedWithRef
export interface ChannelMessageEncryptedRefEvent {
kind: RiverTimelineEvent.ChannelMessageEncryptedWithRef
refEventId: string
}

export interface RoomPropertiesEvent {
kind: RiverTimelineEvent.RoomProperties
export interface ChannelPropertiesEvent {
kind: RiverTimelineEvent.ChannelProperties
properties: ChannelProperties
}

export interface RoomMessageMissingEvent {
kind: RiverTimelineEvent.RoomMessageMissing
export interface ChannelMessageMissingEvent {
kind: RiverTimelineEvent.ChannelMessageMissing
eventId: string
}

Expand All @@ -257,8 +256,8 @@ export enum Membership {
None = '',
}

export interface RoomMemberEvent {
kind: RiverTimelineEvent.RoomMember
export interface StreamMembershipEvent {
kind: RiverTimelineEvent.StreamMembership
userId: string
initiatorId: string
membership: Membership
Expand Down Expand Up @@ -287,7 +286,7 @@ export enum MessageType {
Image = 'm.image',
}

export interface RoomMessageEventContent_Image {
export interface ChannelMessageEventContent_Image {
msgType: MessageType.Image
info?:
| ChannelMessage_Post_Content_Image_Info
Expand All @@ -297,22 +296,22 @@ export interface RoomMessageEventContent_Image {
| PlainMessage<ChannelMessage_Post_Content_Image_Info>
}

export interface RoomMessageEventContent_GM {
export interface ChannelMessageEventContent_GM {
msgType: MessageType.GM
data?: Uint8Array
}

export interface RoomMessageEventContent_Text {
export interface ChannelMessageEventContent_Text {
msgType: MessageType.Text
}

export type RoomMessageEventContentOneOf =
| RoomMessageEventContent_Image
| RoomMessageEventContent_GM
| RoomMessageEventContent_Text
export type ChannelMessageEventContentOneOf =
| ChannelMessageEventContent_Image
| ChannelMessageEventContent_GM
| ChannelMessageEventContent_Text

export interface RoomMessageEvent {
kind: RiverTimelineEvent.RoomMessage
export interface ChannelMessageEvent {
kind: RiverTimelineEvent.ChannelMessage
threadId?: string
threadPreview?: string
replyId?: string
Expand All @@ -327,7 +326,7 @@ export interface RoomMessageEvent {
atChannel?: boolean
}[]
editsEventId?: string
content: RoomMessageEventContentOneOf
content: ChannelMessageEventContentOneOf
attachments?: Attachment[]
}

Expand Down Expand Up @@ -357,7 +356,7 @@ export interface ThreadStatsData {
latestTs: number
parentId: string
parentEvent?: TimelineEvent
parentMessageContent?: RoomMessageEvent
parentMessageContent?: ChannelMessageEvent
isParticipating: boolean
}

Expand Down Expand Up @@ -416,7 +415,7 @@ export type EmbeddedMessageAttachment = {
type: 'embedded_message'
url: string
post?: ChannelMessage_Post | PlainMessage<ChannelMessage_Post>
roomMessageEvent?: RoomMessageEvent
channelMessageEvent?: ChannelMessageEvent
info: PlainMessage<ChannelMessage_Post_Content_EmbeddedMessage_Info>
staticInfo?: PlainMessage<ChannelMessage_Post_Content_EmbeddedMessage_StaticInfo>
id: string
Expand Down
Loading

0 comments on commit a86dfe8

Please sign in to comment.