stream-chat 8.43.0 → 8.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,6 +7,20 @@ import type { DefaultGenerics, Event, ExtendableGenerics, OwnUserResponse, Query
7
7
 
8
8
  const DEFAULT_CONNECTION_RECOVERY_THROTTLE_DURATION = 1000;
9
9
  const MAX_QUERY_THREADS_LIMIT = 25;
10
+ export const THREAD_MANAGER_INITIAL_STATE = {
11
+ active: false,
12
+ isThreadOrderStale: false,
13
+ threads: [],
14
+ unreadThreadCount: 0,
15
+ unseenThreadIds: [],
16
+ lastConnectionDropAt: null,
17
+ pagination: {
18
+ isLoading: false,
19
+ isLoadingNext: false,
20
+ nextCursor: null,
21
+ },
22
+ ready: false,
23
+ };
10
24
 
11
25
  export type ThreadManagerState<SCG extends ExtendableGenerics = DefaultGenerics> = {
12
26
  active: boolean;
@@ -40,20 +54,7 @@ export class ThreadManager<SCG extends ExtendableGenerics = DefaultGenerics> {
40
54
 
41
55
  constructor({ client }: { client: StreamChat<SCG> }) {
42
56
  this.client = client;
43
- this.state = new StateStore<ThreadManagerState<SCG>>({
44
- active: false,
45
- isThreadOrderStale: false,
46
- threads: [],
47
- unreadThreadCount: 0,
48
- unseenThreadIds: [],
49
- lastConnectionDropAt: null,
50
- pagination: {
51
- isLoading: false,
52
- isLoadingNext: false,
53
- nextCursor: null,
54
- },
55
- ready: false,
56
- });
57
+ this.state = new StateStore<ThreadManagerState<SCG>>(THREAD_MANAGER_INITIAL_STATE);
57
58
 
58
59
  this.threadsByIdGetterCache = { threads: [], threadsById: {} };
59
60
  }
@@ -76,6 +77,10 @@ export class ThreadManager<SCG extends ExtendableGenerics = DefaultGenerics> {
76
77
  return threadsById;
77
78
  }
78
79
 
80
+ public resetState = () => {
81
+ this.state.next(THREAD_MANAGER_INITIAL_STATE);
82
+ };
83
+
79
84
  public activate = () => {
80
85
  this.state.partialNext({ active: true });
81
86
  };
@@ -92,6 +97,7 @@ export class ThreadManager<SCG extends ExtendableGenerics = DefaultGenerics> {
92
97
  this.unsubscribeFunctions.add(this.subscribeReloadOnActivation());
93
98
  this.unsubscribeFunctions.add(this.subscribeNewReplies());
94
99
  this.unsubscribeFunctions.add(this.subscribeRecoverAfterConnectionDrop());
100
+ this.unsubscribeFunctions.add(this.subscribeChannelDeleted());
95
101
  };
96
102
 
97
103
  private subscribeUnreadThreadsCountChange = () => {
@@ -117,6 +123,15 @@ export class ThreadManager<SCG extends ExtendableGenerics = DefaultGenerics> {
117
123
  return () => unsubscribeFunctions.forEach((unsubscribe) => unsubscribe());
118
124
  };
119
125
 
126
+ private subscribeChannelDeleted = () =>
127
+ this.client.on('notification.channel_deleted', (event) => {
128
+ const { cid } = event;
129
+ const { threads } = this.state.getLatestValue();
130
+
131
+ const newThreads = threads.filter((thread) => thread.channel.cid !== cid);
132
+ this.state.partialNext({ threads: newThreads });
133
+ }).unsubscribe;
134
+
120
135
  private subscribeManageThreadSubscriptions = () =>
121
136
  this.state.subscribeWithSelector(
122
137
  (nextValue) => ({ threads: nextValue.threads }),
package/src/types.ts CHANGED
@@ -40,6 +40,7 @@ export type DefaultGenerics = {
40
40
  channelType: UR;
41
41
  commandType: LiteralStringForUnion;
42
42
  eventType: UR;
43
+ memberType: UR;
43
44
  messageType: UR;
44
45
  pollOptionType: UR;
45
46
  pollType: UR;
@@ -52,6 +53,7 @@ export type ExtendableGenerics = {
52
53
  channelType: UR;
53
54
  commandType: string;
54
55
  eventType: UR;
56
+ memberType: UR;
55
57
  messageType: UR;
56
58
  pollOptionType: UR;
57
59
  pollType: UR;
@@ -331,13 +333,17 @@ export type ChannelMemberAPIResponse<StreamChatGenerics extends ExtendableGeneri
331
333
  members: ChannelMemberResponse<StreamChatGenerics>[];
332
334
  };
333
335
 
334
- export type ChannelMemberUpdates = {
336
+ export type ChannelMemberUpdates<
337
+ StreamChatGenerics extends ExtendableGenerics = DefaultGenerics
338
+ > = StreamChatGenerics['memberType'] & {
335
339
  archived?: boolean;
336
340
  channel_role?: Role;
337
341
  pinned?: boolean;
338
342
  };
339
343
 
340
- export type ChannelMemberResponse<StreamChatGenerics extends ExtendableGenerics = DefaultGenerics> = {
344
+ export type ChannelMemberResponse<
345
+ StreamChatGenerics extends ExtendableGenerics = DefaultGenerics
346
+ > = StreamChatGenerics['memberType'] & {
341
347
  archived_at?: string;
342
348
  ban_expires?: string;
343
349
  banned?: boolean;
@@ -351,7 +357,7 @@ export type ChannelMemberResponse<StreamChatGenerics extends ExtendableGenerics
351
357
  pinned_at?: string;
352
358
  role?: string;
353
359
  shadow_banned?: boolean;
354
- status?: string;
360
+ status?: InviteStatus;
355
361
  updated_at?: string;
356
362
  user?: UserResponse<StreamChatGenerics>;
357
363
  user_id?: string;
@@ -481,6 +487,7 @@ export type FormatMessageResponse<StreamChatGenerics extends ExtendableGenerics
481
487
  channelType: StreamChatGenerics['channelType'];
482
488
  commandType: StreamChatGenerics['commandType'];
483
489
  eventType: StreamChatGenerics['eventType'];
490
+ memberType: StreamChatGenerics['memberType'];
484
491
  messageType: {};
485
492
  pollOptionType: StreamChatGenerics['pollOptionType'];
486
493
  pollType: StreamChatGenerics['pollType'];
@@ -1005,6 +1012,10 @@ export type DeactivateUsersOptions = {
1005
1012
  mark_messages_deleted?: boolean;
1006
1013
  };
1007
1014
 
1015
+ export type NewMemberPayload<
1016
+ StreamChatGenerics extends ExtendableGenerics = DefaultGenerics
1017
+ > = StreamChatGenerics['memberType'] & Pick<ChannelMemberResponse<StreamChatGenerics>, 'user_id' | 'channel_role'>;
1018
+
1008
1019
  // TODO: rename to UpdateChannelOptions in the next major update and use it in channel._update and/or channel.update
1009
1020
  export type InviteOptions<StreamChatGenerics extends ExtendableGenerics = DefaultGenerics> = {
1010
1021
  accept_invite?: boolean;
@@ -1098,11 +1109,25 @@ export type PinnedMessagePaginationOptions = {
1098
1109
  };
1099
1110
 
1100
1111
  export type QueryMembersOptions = {
1112
+ // Pagination option: select members created after the date (RFC399)
1113
+ created_at_after?: string;
1114
+ // Pagination option: select members created after or equal the date (RFC399)
1115
+ created_at_after_or_equal?: string;
1116
+ // Pagination option: select members created before the date (RFC399)
1117
+ created_at_before?: string;
1118
+ // Pagination option: select members created before or equal the date (RFC399)
1119
+ created_at_before_or_equal?: string;
1120
+ // Number of members to return, default 100
1101
1121
  limit?: number;
1122
+ // Offset (max is 1000)
1102
1123
  offset?: number;
1124
+ // Pagination option: excludes members with ID less or equal the value
1103
1125
  user_id_gt?: string;
1126
+ // Pagination option: excludes members with ID less than the value
1104
1127
  user_id_gte?: string;
1128
+ // Pagination option: excludes members with ID greater or equal the value
1105
1129
  user_id_lt?: string;
1130
+ // Pagination option: excludes members with ID greater than the value
1106
1131
  user_id_lte?: string;
1107
1132
  };
1108
1133
 
@@ -1465,6 +1490,7 @@ export type ChannelFilters<StreamChatGenerics extends ExtendableGenerics = Defau
1465
1490
  channelType: {};
1466
1491
  commandType: StreamChatGenerics['commandType'];
1467
1492
  eventType: StreamChatGenerics['eventType'];
1493
+ memberType: StreamChatGenerics['memberType'];
1468
1494
  messageType: StreamChatGenerics['messageType'];
1469
1495
  pollOptionType: StreamChatGenerics['pollOptionType'];
1470
1496
  pollType: StreamChatGenerics['pollType'];
@@ -1480,6 +1506,7 @@ export type ChannelFilters<StreamChatGenerics extends ExtendableGenerics = Defau
1480
1506
  channelType: {};
1481
1507
  commandType: StreamChatGenerics['commandType'];
1482
1508
  eventType: StreamChatGenerics['eventType'];
1509
+ memberType: StreamChatGenerics['memberType'];
1483
1510
  messageType: StreamChatGenerics['messageType'];
1484
1511
  pollOptionType: StreamChatGenerics['pollOptionType'];
1485
1512
  pollType: StreamChatGenerics['pollType'];
@@ -1494,6 +1521,7 @@ export type ChannelFilters<StreamChatGenerics extends ExtendableGenerics = Defau
1494
1521
  channelType: {};
1495
1522
  commandType: StreamChatGenerics['commandType'];
1496
1523
  eventType: StreamChatGenerics['eventType'];
1524
+ memberType: StreamChatGenerics['memberType'];
1497
1525
  messageType: StreamChatGenerics['messageType'];
1498
1526
  pollOptionType: StreamChatGenerics['pollOptionType'];
1499
1527
  pollType: StreamChatGenerics['pollType'];
@@ -1632,6 +1660,7 @@ export type MessageFilters<StreamChatGenerics extends ExtendableGenerics = Defau
1632
1660
  channelType: StreamChatGenerics['channelType'];
1633
1661
  commandType: StreamChatGenerics['commandType'];
1634
1662
  eventType: StreamChatGenerics['eventType'];
1663
+ memberType: StreamChatGenerics['memberType'];
1635
1664
  messageType: {};
1636
1665
  pollOptionType: StreamChatGenerics['pollOptionType'];
1637
1666
  pollType: StreamChatGenerics['pollType'];
@@ -1647,6 +1676,7 @@ export type MessageFilters<StreamChatGenerics extends ExtendableGenerics = Defau
1647
1676
  channelType: StreamChatGenerics['channelType'];
1648
1677
  commandType: StreamChatGenerics['commandType'];
1649
1678
  eventType: StreamChatGenerics['eventType'];
1679
+ memberType: StreamChatGenerics['memberType'];
1650
1680
  messageType: {};
1651
1681
  pollOptionType: StreamChatGenerics['pollOptionType'];
1652
1682
  pollType: StreamChatGenerics['pollType'];
@@ -1661,6 +1691,7 @@ export type MessageFilters<StreamChatGenerics extends ExtendableGenerics = Defau
1661
1691
  channelType: StreamChatGenerics['channelType'];
1662
1692
  commandType: StreamChatGenerics['commandType'];
1663
1693
  eventType: StreamChatGenerics['eventType'];
1694
+ memberType: StreamChatGenerics['memberType'];
1664
1695
  messageType: {};
1665
1696
  pollOptionType: StreamChatGenerics['pollOptionType'];
1666
1697
  pollType: StreamChatGenerics['pollType'];
@@ -1758,6 +1789,7 @@ export type UserFilters<StreamChatGenerics extends ExtendableGenerics = DefaultG
1758
1789
  channelType: StreamChatGenerics['channelType'];
1759
1790
  commandType: StreamChatGenerics['commandType'];
1760
1791
  eventType: StreamChatGenerics['eventType'];
1792
+ memberType: StreamChatGenerics['memberType'];
1761
1793
  messageType: StreamChatGenerics['messageType'];
1762
1794
  pollOptionType: StreamChatGenerics['pollOptionType'];
1763
1795
  pollType: StreamChatGenerics['pollType'];
@@ -1773,6 +1805,7 @@ export type UserFilters<StreamChatGenerics extends ExtendableGenerics = DefaultG
1773
1805
  channelType: StreamChatGenerics['channelType'];
1774
1806
  commandType: StreamChatGenerics['commandType'];
1775
1807
  eventType: StreamChatGenerics['eventType'];
1808
+ memberType: StreamChatGenerics['memberType'];
1776
1809
  messageType: StreamChatGenerics['messageType'];
1777
1810
  pollOptionType: StreamChatGenerics['pollOptionType'];
1778
1811
  pollType: StreamChatGenerics['pollType'];
@@ -1787,6 +1820,7 @@ export type UserFilters<StreamChatGenerics extends ExtendableGenerics = DefaultG
1787
1820
  channelType: StreamChatGenerics['channelType'];
1788
1821
  commandType: StreamChatGenerics['commandType'];
1789
1822
  eventType: StreamChatGenerics['eventType'];
1823
+ memberType: StreamChatGenerics['memberType'];
1790
1824
  messageType: StreamChatGenerics['messageType'];
1791
1825
  pollOptionType: StreamChatGenerics['pollOptionType'];
1792
1826
  pollType: StreamChatGenerics['pollType'];
@@ -1797,6 +1831,83 @@ export type UserFilters<StreamChatGenerics extends ExtendableGenerics = DefaultG
1797
1831
  }
1798
1832
  >;
1799
1833
 
1834
+ export type InviteStatus = 'pending' | 'accepted' | 'rejected';
1835
+
1836
+ // https://getstream.io/chat/docs/react/channel_member/#update-channel-members
1837
+ export type MemberFilters<StreamChatGenerics extends ExtendableGenerics = DefaultGenerics> = QueryFilters<
1838
+ {
1839
+ banned?:
1840
+ | { $eq?: ChannelMemberResponse<StreamChatGenerics>['banned'] }
1841
+ | ChannelMemberResponse<StreamChatGenerics>['banned'];
1842
+ channel_role?:
1843
+ | { $eq?: ChannelMemberResponse<StreamChatGenerics>['channel_role'] }
1844
+ | ChannelMemberResponse<StreamChatGenerics>['channel_role'];
1845
+ cid?: { $eq?: ChannelResponse<StreamChatGenerics>['cid'] } | ChannelResponse<StreamChatGenerics>['cid'];
1846
+ created_at?:
1847
+ | {
1848
+ $eq?: ChannelMemberResponse<StreamChatGenerics>['created_at'];
1849
+ $gt?: ChannelMemberResponse<StreamChatGenerics>['created_at'];
1850
+ $gte?: ChannelMemberResponse<StreamChatGenerics>['created_at'];
1851
+ $lt?: ChannelMemberResponse<StreamChatGenerics>['created_at'];
1852
+ $lte?: ChannelMemberResponse<StreamChatGenerics>['created_at'];
1853
+ }
1854
+ | ChannelMemberResponse<StreamChatGenerics>['created_at'];
1855
+ id?:
1856
+ | RequireOnlyOne<{
1857
+ $eq?: UserResponse<StreamChatGenerics>['id'];
1858
+ $in?: UserResponse<StreamChatGenerics>['id'][];
1859
+ }>
1860
+ | UserResponse<StreamChatGenerics>['id'];
1861
+ invite?:
1862
+ | { $eq?: ChannelMemberResponse<StreamChatGenerics>['status'] }
1863
+ | ChannelMemberResponse<StreamChatGenerics>['status'];
1864
+ joined?: { $eq?: boolean } | boolean;
1865
+ last_active?:
1866
+ | {
1867
+ $eq?: UserResponse<StreamChatGenerics>['last_active'];
1868
+ $gt?: UserResponse<StreamChatGenerics>['last_active'];
1869
+ $gte?: UserResponse<StreamChatGenerics>['last_active'];
1870
+ $lt?: UserResponse<StreamChatGenerics>['last_active'];
1871
+ $lte?: UserResponse<StreamChatGenerics>['last_active'];
1872
+ }
1873
+ | UserResponse<StreamChatGenerics>['last_active'];
1874
+ name?:
1875
+ | RequireOnlyOne<{
1876
+ $autocomplete?: ChannelMemberResponse<StreamChatGenerics>['name'];
1877
+ $eq?: ChannelMemberResponse<StreamChatGenerics>['name'];
1878
+ $in?: ChannelMemberResponse<StreamChatGenerics>['name'][];
1879
+ $q?: ChannelMemberResponse<StreamChatGenerics>['name'];
1880
+ }>
1881
+ | PrimitiveFilter<ChannelMemberResponse<StreamChatGenerics>['name']>;
1882
+ updated_at?:
1883
+ | {
1884
+ $eq?: ChannelMemberResponse<StreamChatGenerics>['updated_at'];
1885
+ $gt?: ChannelMemberResponse<StreamChatGenerics>['updated_at'];
1886
+ $gte?: ChannelMemberResponse<StreamChatGenerics>['updated_at'];
1887
+ $lt?: ChannelMemberResponse<StreamChatGenerics>['updated_at'];
1888
+ $lte?: ChannelMemberResponse<StreamChatGenerics>['updated_at'];
1889
+ }
1890
+ | ChannelMemberResponse<StreamChatGenerics>['updated_at'];
1891
+ 'user.email'?:
1892
+ | RequireOnlyOne<{
1893
+ $autocomplete?: string;
1894
+ $eq?: string;
1895
+ $in?: string;
1896
+ }>
1897
+ | string;
1898
+ user_id?:
1899
+ | RequireOnlyOne<{
1900
+ $eq?: ChannelMemberResponse<StreamChatGenerics>['user_id'];
1901
+ $in?: ChannelMemberResponse<StreamChatGenerics>['user_id'][];
1902
+ }>
1903
+ | PrimitiveFilter<ChannelMemberResponse<StreamChatGenerics>['id']>;
1904
+ } & {
1905
+ [Key in keyof ContainsOperator<StreamChatGenerics['memberType']>]?:
1906
+ | RequireOnlyOne<QueryFilter<ContainsOperator<StreamChatGenerics['memberType']>[Key]>>
1907
+ | PrimitiveFilter<ContainsOperator<StreamChatGenerics['memberType']>[Key]>;
1908
+ }
1909
+ >;
1910
+
1800
1911
  /**
1801
1912
  * Sort Types
1802
1913
  */
@@ -1844,8 +1955,8 @@ export type UserSort<StreamChatGenerics extends ExtendableGenerics = DefaultGene
1844
1955
  | Array<Sort<UserResponse<StreamChatGenerics>>>;
1845
1956
 
1846
1957
  export type MemberSort<StreamChatGenerics extends ExtendableGenerics = DefaultGenerics> =
1847
- | Sort<Pick<UserResponse<StreamChatGenerics>, 'id' | 'created_at' | 'name'>>
1848
- | Array<Sort<Pick<UserResponse<StreamChatGenerics>, 'id' | 'created_at' | 'name'>>>;
1958
+ | Sort<Pick<UserResponse<StreamChatGenerics>, 'id' | 'created_at' | 'last_active' | 'name' | 'updated_at'>>
1959
+ | Array<Sort<Pick<UserResponse<StreamChatGenerics>, 'id' | 'created_at' | 'last_active' | 'name' | 'updated_at'>>>;
1849
1960
 
1850
1961
  export type SearchMessageSortBase<StreamChatGenerics extends ExtendableGenerics = DefaultGenerics> = Sort<
1851
1962
  StreamChatGenerics['messageType']
@@ -2110,7 +2221,7 @@ export type ChannelData<
2110
2221
  StreamChatGenerics extends ExtendableGenerics = DefaultGenerics
2111
2222
  > = StreamChatGenerics['channelType'] & {
2112
2223
  blocked?: boolean;
2113
- members?: string[];
2224
+ members?: string[] | Array<NewMemberPayload<StreamChatGenerics>>;
2114
2225
  name?: string;
2115
2226
  };
2116
2227
 
@@ -2509,9 +2620,9 @@ export type PartialUpdateChannel<StreamChatGenerics extends ExtendableGenerics =
2509
2620
  unset?: Array<keyof ChannelResponse<StreamChatGenerics>>;
2510
2621
  };
2511
2622
 
2512
- export type PartialUpdateMember = {
2513
- set?: ChannelMemberUpdates;
2514
- unset?: Array<keyof ChannelMemberUpdates>;
2623
+ export type PartialUpdateMember<StreamChatGenerics extends ExtendableGenerics = DefaultGenerics> = {
2624
+ set?: ChannelMemberUpdates<StreamChatGenerics>;
2625
+ unset?: Array<keyof ChannelMemberUpdates<StreamChatGenerics>>;
2515
2626
  };
2516
2627
 
2517
2628
  export type PartialUserUpdate<StreamChatGenerics extends ExtendableGenerics = DefaultGenerics> = {