Skip to content

Commit

Permalink
Merge pull request #1941 from ably/message-types-refactor
Browse files Browse the repository at this point in the history
Restructure and clean up message and presencemessage types
  • Loading branch information
SimonWoolf authored Jan 9, 2025
2 parents 1d6483a + e1e9966 commit 494500f
Show file tree
Hide file tree
Showing 29 changed files with 1,035 additions and 1,122 deletions.
30 changes: 8 additions & 22 deletions ably.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -866,10 +866,6 @@ declare namespace ChannelModes {
* The client can receive presence messages.
*/
type PRESENCE_SUBSCRIBE = 'PRESENCE_SUBSCRIBE';
/**
* The client is resuming an existing connection.
*/
type ATTACH_RESUME = 'ATTACH_RESUME';
}

/**
Expand All @@ -879,8 +875,7 @@ export type ChannelMode =
| ChannelModes.PUBLISH
| ChannelModes.SUBSCRIBE
| ChannelModes.PRESENCE
| ChannelModes.PRESENCE_SUBSCRIBE
| ChannelModes.ATTACH_RESUME;
| ChannelModes.PRESENCE_SUBSCRIBE;

/**
* Passes additional properties to a {@link Channel} or {@link RealtimeChannel} object, such as encryption, {@link ChannelMode} and channel parameters.
Expand Down Expand Up @@ -2392,10 +2387,6 @@ export interface Operation {
* The namespace containing the different types of message actions.
*/
declare namespace MessageActions {
/**
* Message action has not been set.
*/
type MESSAGE_UNSET = 'message.unset';
/**
* Message action for a newly created message.
*/
Expand All @@ -2408,31 +2399,26 @@ declare namespace MessageActions {
* Message action for a deleted message.
*/
type MESSAGE_DELETE = 'message.delete';
/**
* Message action for a newly created annotation.
*/
type ANNOTATION_CREATE = 'annotation.create';
/**
* Message action for a deleted annotation.
*/
type ANNOTATION_DELETE = 'annotation.delete';
/**
* Message action for a meta-message that contains channel occupancy information.
*/
type META_OCCUPANCY = 'meta.occupancy';
/**
* Message action for a message containing the latest rolled-up summary of annotations
* that have been made to this message.
*/
type MESSAGE_SUMMARY = 'message.summary';
}

/**
* Describes the possible action types used on an {@link Message}.
*/
export type MessageAction =
| MessageActions.MESSAGE_UNSET
| MessageActions.MESSAGE_CREATE
| MessageActions.MESSAGE_UPDATE
| MessageActions.MESSAGE_DELETE
| MessageActions.ANNOTATION_CREATE
| MessageActions.ANNOTATION_DELETE
| MessageActions.META_OCCUPANCY;
| MessageActions.META_OCCUPANCY
| MessageActions.MESSAGE_SUMMARY;

/**
* A message received from Ably.
Expand Down
2 changes: 2 additions & 0 deletions scripts/moduleReport.ts
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,9 @@ async function checkBaseRealtimeFiles() {
'src/common/lib/transport/transport.ts',
'src/common/lib/types/errorinfo.ts',
'src/common/lib/types/message.ts',
'src/common/lib/types/basemessage.ts',
'src/common/lib/types/protocolmessage.ts',
'src/common/lib/types/protocolmessagecommon.ts',
'src/common/lib/types/pushchannelsubscription.ts', // TODO why? https://github.com/ably/ably-js/issues/1506
'src/common/lib/util/defaults.ts',
'src/common/lib/util/eventemitter.ts',
Expand Down
11 changes: 3 additions & 8 deletions src/common/lib/client/defaultrealtime.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,7 @@ import { DefaultPresenceMessage } from '../types/defaultpresencemessage';
import WebSocketTransport from '../transport/websockettransport';
import { FilteredSubscriptions } from './filteredsubscriptions';
import { PresenceMap } from './presencemap';
import {
fromValues as presenceMessageFromValues,
fromValuesArray as presenceMessagesFromValuesArray,
fromWireProtocol as presenceMessageFromWireProtocol,
} from '../types/presencemessage';
import PresenceMessage, { WirePresenceMessage } from '../types/presencemessage';
import { Http } from 'common/types/http';
import Defaults from '../util/defaults';
import Logger from '../util/logger';
Expand All @@ -39,9 +35,8 @@ export class DefaultRealtime extends BaseRealtime {
MsgPack,
RealtimePresence: {
RealtimePresence,
presenceMessageFromValues,
presenceMessagesFromValuesArray,
presenceMessageFromWireProtocol,
PresenceMessage,
WirePresenceMessage,
},
WebSocketTransport,
MessageInteractions: FilteredSubscriptions,
Expand Down
11 changes: 3 additions & 8 deletions src/common/lib/client/modularplugins.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,13 @@ import RealtimePresence from './realtimepresence';
import XHRRequest from 'platform/web/lib/http/request/xhrrequest';
import fetchRequest from 'platform/web/lib/http/request/fetchrequest';
import { FilteredSubscriptions } from './filteredsubscriptions';
import {
fromValues as presenceMessageFromValues,
fromValuesArray as presenceMessagesFromValuesArray,
fromWireProtocol as presenceMessageFromWireProtocol,
} from '../types/presencemessage';
import PresenceMessage, { WirePresenceMessage } from '../types/presencemessage';
import { TransportCtor } from '../transport/transport';
import * as PushPlugin from 'plugins/push';

export interface PresenceMessagePlugin {
presenceMessageFromValues: typeof presenceMessageFromValues;
presenceMessagesFromValuesArray: typeof presenceMessagesFromValuesArray;
presenceMessageFromWireProtocol: typeof presenceMessageFromWireProtocol;
PresenceMessage: typeof PresenceMessage;
WirePresenceMessage: typeof WirePresenceMessage;
}

export type RealtimePresencePlugin = PresenceMessagePlugin & {
Expand Down
6 changes: 3 additions & 3 deletions src/common/lib/client/presencemap.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import * as Utils from '../util/utils';
import EventEmitter from '../util/eventemitter';
import Logger from '../util/logger';
import PresenceMessage, { fromValues as presenceMessageFromValues } from '../types/presencemessage';
import PresenceMessage from '../types/presencemessage';

import type RealtimePresence from './realtimepresence';

Expand Down Expand Up @@ -80,7 +80,7 @@ export class PresenceMap extends EventEmitter {

put(item: PresenceMessage) {
if (item.action === 'enter' || item.action === 'update') {
item = presenceMessageFromValues(item);
item = PresenceMessage.fromValues(item);
item.action = 'present';
}
const map = this.map,
Expand Down Expand Up @@ -118,7 +118,7 @@ export class PresenceMap extends EventEmitter {

/* RTP2f */
if (this.syncInProgress) {
item = presenceMessageFromValues(item);
item = PresenceMessage.fromValues(item);
item.action = 'absent';
map[key] = item;
} else {
Expand Down
Loading

0 comments on commit 494500f

Please sign in to comment.