@sendbird/uikit-utils 2.2.0 → 2.4.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.
- package/lib/commonjs/hooks/index.js +38 -1
- package/lib/commonjs/hooks/index.js.map +1 -1
- package/lib/commonjs/hooks/react-native.js +54 -0
- package/lib/commonjs/hooks/react-native.js.map +1 -0
- package/lib/commonjs/index.js +53 -21
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/sendbird/channel.js +29 -1
- package/lib/commonjs/sendbird/channel.js.map +1 -1
- package/lib/commonjs/sendbird/message.js +56 -1
- package/lib/commonjs/sendbird/message.js.map +1 -1
- package/lib/commonjs/sendbird/user.js +0 -6
- package/lib/commonjs/sendbird/user.js.map +1 -1
- package/lib/commonjs/shared/index.js +86 -0
- package/lib/commonjs/shared/index.js.map +1 -0
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/ui-format/openChannel.js +22 -0
- package/lib/commonjs/ui-format/openChannel.js.map +1 -0
- package/lib/module/hooks/index.js +29 -1
- package/lib/module/hooks/index.js.map +1 -1
- package/lib/module/hooks/react-native.js +37 -0
- package/lib/module/hooks/react-native.js.map +1 -0
- package/lib/module/index.js +10 -3
- package/lib/module/index.js.map +1 -1
- package/lib/module/sendbird/channel.js +23 -1
- package/lib/module/sendbird/channel.js.map +1 -1
- package/lib/module/sendbird/message.js +51 -1
- package/lib/module/sendbird/message.js.map +1 -1
- package/lib/module/sendbird/user.js +0 -4
- package/lib/module/sendbird/user.js.map +1 -1
- package/lib/module/shared/index.js +67 -0
- package/lib/module/shared/index.js.map +1 -0
- package/lib/module/types.js.map +1 -1
- package/lib/module/ui-format/openChannel.js +10 -0
- package/lib/module/ui-format/openChannel.js.map +1 -0
- package/lib/typescript/src/hooks/index.d.ts +3 -0
- package/lib/typescript/src/hooks/react-native.d.ts +12 -0
- package/lib/typescript/src/index.d.ts +9 -4
- package/lib/typescript/src/sendbird/channel.d.ts +10 -1
- package/lib/typescript/src/sendbird/message.d.ts +3 -0
- package/lib/typescript/src/sendbird/user.d.ts +0 -2
- package/lib/typescript/src/shared/index.d.ts +32 -0
- package/lib/typescript/src/types.d.ts +8 -3
- package/lib/typescript/src/ui-format/openChannel.d.ts +3 -0
- package/package.json +5 -4
- package/src/hooks/index.ts +31 -1
- package/src/hooks/react-native.ts +54 -0
- package/src/index.ts +20 -3
- package/src/sendbird/channel.ts +33 -2
- package/src/sendbird/message.ts +54 -1
- package/src/sendbird/user.ts +0 -7
- package/src/shared/index.ts +66 -0
- package/src/types.ts +17 -2
- package/src/ui-format/openChannel.ts +11 -0
- package/lib/commonjs/shared/conditionChaining.js +0 -15
- package/lib/commonjs/shared/conditionChaining.js.map +0 -1
- package/lib/commonjs/shared/replace.js +0 -14
- package/lib/commonjs/shared/replace.js.map +0 -1
- package/lib/module/shared/conditionChaining.js +0 -7
- package/lib/module/shared/conditionChaining.js.map +0 -1
- package/lib/module/shared/replace.js +0 -6
- package/lib/module/shared/replace.js.map +0 -1
- package/lib/typescript/src/shared/conditionChaining.d.ts +0 -2
- package/lib/typescript/src/shared/replace.d.ts +0 -2
- package/src/shared/conditionChaining.ts +0 -6
- package/src/shared/replace.ts +0 -5
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.useUniqId = exports.useIsMountedRef = exports.useIsFirstMount = exports.useIIFE = exports.useFreshCallback = exports.useForceUpdate = exports.useAsyncLayoutEffect = exports.useAsyncEffect = void 0;
|
|
6
|
+
exports.useUniqId = exports.useUniqHandlerId = exports.usePartialState = exports.useIsMountedRef = exports.useIsFirstMount = exports.useIIFE = exports.useFreshCallback = exports.useForceUpdate = exports.useDebounceEffect = exports.useAsyncLayoutEffect = exports.useAsyncEffect = void 0;
|
|
7
7
|
|
|
8
8
|
var _react = require("react");
|
|
9
9
|
|
|
@@ -19,6 +19,13 @@ const useUniqId = key => {
|
|
|
19
19
|
|
|
20
20
|
exports.useUniqId = useUniqId;
|
|
21
21
|
|
|
22
|
+
const useUniqHandlerId = name => {
|
|
23
|
+
const id = useUniqId(name);
|
|
24
|
+
return `${name}_${id}`;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
exports.useUniqHandlerId = useUniqHandlerId;
|
|
28
|
+
|
|
22
29
|
const useForceUpdate = () => {
|
|
23
30
|
const [, updater] = (0, _react.useState)(0);
|
|
24
31
|
return (0, _react.useCallback)(() => updater(prev => prev + 1), []);
|
|
@@ -96,4 +103,34 @@ const useFreshCallback = callback => {
|
|
|
96
103
|
};
|
|
97
104
|
|
|
98
105
|
exports.useFreshCallback = useFreshCallback;
|
|
106
|
+
|
|
107
|
+
const useDebounceEffect = function (action, delay) {
|
|
108
|
+
let deps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
109
|
+
const timeoutRef = (0, _react.useRef)();
|
|
110
|
+
(0, _react.useEffect)(() => {
|
|
111
|
+
timeoutRef.current = setTimeout(async () => {
|
|
112
|
+
try {
|
|
113
|
+
await action();
|
|
114
|
+
} finally {
|
|
115
|
+
timeoutRef.current = undefined;
|
|
116
|
+
}
|
|
117
|
+
}, delay);
|
|
118
|
+
return () => {
|
|
119
|
+
if (timeoutRef.current) {
|
|
120
|
+
clearTimeout(timeoutRef.current);
|
|
121
|
+
timeoutRef.current = undefined;
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
}, [delay, ...deps]);
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
exports.useDebounceEffect = useDebounceEffect;
|
|
128
|
+
|
|
129
|
+
const usePartialState = initialState => {
|
|
130
|
+
return (0, _react.useReducer)((prev, state) => ({ ...prev,
|
|
131
|
+
...state
|
|
132
|
+
}), initialState);
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
exports.usePartialState = usePartialState;
|
|
99
136
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["idPool","useUniqId","key","useState","useForceUpdate","updater","useCallback","prev","useAsyncEffect","asyncEffect","deps","useEffect","createAsyncEffectCallback","useAsyncLayoutEffect","useLayoutEffect","useIIFE","callback","iife","destructor","Promise","awaitedDestructor","useIsMountedRef","isMounted","useRef","current","useIsFirstMount","isFirstMount","useFreshCallback","ref"],"sources":["index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { DependencyList } from 'react';\nimport { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react';\n\ntype Destructor = () => void;\ntype AsyncEffectCallback = () => void | Destructor | Promise<void> | Promise<Destructor>;\n\nconst idPool: { [key: string]: number } = {};\nexport const useUniqId = (key: string) => {\n return useState(() => {\n if (!idPool[key]) idPool[key] = 1;\n return idPool[key]++;\n })[0];\n};\n\nexport const useForceUpdate = () => {\n const [, updater] = useState(0);\n return useCallback(() => updater((prev) => prev + 1), []);\n};\n\nexport const useAsyncEffect = (asyncEffect: AsyncEffectCallback, deps?: DependencyList) => {\n useEffect(createAsyncEffectCallback(asyncEffect), deps);\n};\nexport const useAsyncLayoutEffect = (asyncEffect: AsyncEffectCallback, deps?: DependencyList) => {\n useLayoutEffect(createAsyncEffectCallback(asyncEffect), deps);\n};\nexport const useIIFE = <T>(callback: () => T) => {\n return iife(callback);\n};\nconst iife = <T extends (...args: any[]) => any>(callback: T): ReturnType<T> => callback();\nconst createAsyncEffectCallback = (asyncEffect: AsyncEffectCallback) => () => {\n const destructor = iife(asyncEffect);\n return () => {\n if (!destructor) return;\n\n if (destructor instanceof Promise) {\n iife(async () => {\n const awaitedDestructor = await destructor;\n if (awaitedDestructor) awaitedDestructor();\n });\n } else {\n iife(destructor);\n }\n };\n};\n\nexport const useIsMountedRef = () => {\n const isMounted = useRef(true);\n\n useEffect(() => {\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n return isMounted;\n};\n\nexport const useIsFirstMount = () => {\n const isFirstMount = useRef(true);\n\n if (isFirstMount.current) {\n isFirstMount.current = false;\n return true;\n }\n\n return isFirstMount.current;\n};\n\nexport const useFreshCallback = <T extends (...args: any[]) => any>(callback: T): T => {\n const ref = useRef<T>(callback);\n ref.current = callback;\n return useCallback(((...args) => ref.current(...args)) as T, []);\n};\n"],"mappings":";;;;;;;AAEA;;AAFA;AAOA,MAAMA,MAAiC,GAAG,EAA1C;;AACO,MAAMC,SAAS,GAAIC,GAAD,IAAiB;EACxC,OAAO,IAAAC,eAAA,EAAS,MAAM;IACpB,IAAI,CAACH,MAAM,CAACE,GAAD,CAAX,EAAkBF,MAAM,CAACE,GAAD,CAAN,GAAc,CAAd;IAClB,OAAOF,MAAM,CAACE,GAAD,CAAN,EAAP;EACD,CAHM,EAGJ,CAHI,CAAP;AAID,CALM;;;;AAOA,MAAME,cAAc,GAAG,MAAM;EAClC,MAAM,GAAGC,OAAH,IAAc,
|
|
1
|
+
{"version":3,"names":["idPool","useUniqId","key","useState","useUniqHandlerId","name","id","useForceUpdate","updater","useCallback","prev","useAsyncEffect","asyncEffect","deps","useEffect","createAsyncEffectCallback","useAsyncLayoutEffect","useLayoutEffect","useIIFE","callback","iife","destructor","Promise","awaitedDestructor","useIsMountedRef","isMounted","useRef","current","useIsFirstMount","isFirstMount","useFreshCallback","ref","useDebounceEffect","action","delay","timeoutRef","setTimeout","undefined","clearTimeout","usePartialState","initialState","useReducer","state"],"sources":["index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { DependencyList } from 'react';\nimport { useCallback, useEffect, useLayoutEffect, useReducer, useRef, useState } from 'react';\n\ntype Destructor = () => void;\ntype AsyncEffectCallback = () => void | Destructor | Promise<void> | Promise<Destructor>;\n\nconst idPool: { [key: string]: number } = {};\nexport const useUniqId = (key: string) => {\n return useState(() => {\n if (!idPool[key]) idPool[key] = 1;\n return idPool[key]++;\n })[0];\n};\n\nexport const useUniqHandlerId = (name: string) => {\n const id = useUniqId(name);\n return `${name}_${id}`;\n};\n\nexport const useForceUpdate = () => {\n const [, updater] = useState(0);\n return useCallback(() => updater((prev) => prev + 1), []);\n};\n\nexport const useAsyncEffect = (asyncEffect: AsyncEffectCallback, deps?: DependencyList) => {\n useEffect(createAsyncEffectCallback(asyncEffect), deps);\n};\nexport const useAsyncLayoutEffect = (asyncEffect: AsyncEffectCallback, deps?: DependencyList) => {\n useLayoutEffect(createAsyncEffectCallback(asyncEffect), deps);\n};\nexport const useIIFE = <T>(callback: () => T) => {\n return iife(callback);\n};\nconst iife = <T extends (...args: any[]) => any>(callback: T): ReturnType<T> => callback();\nconst createAsyncEffectCallback = (asyncEffect: AsyncEffectCallback) => () => {\n const destructor = iife(asyncEffect);\n return () => {\n if (!destructor) return;\n\n if (destructor instanceof Promise) {\n iife(async () => {\n const awaitedDestructor = await destructor;\n if (awaitedDestructor) awaitedDestructor();\n });\n } else {\n iife(destructor);\n }\n };\n};\n\nexport const useIsMountedRef = () => {\n const isMounted = useRef(true);\n\n useEffect(() => {\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n return isMounted;\n};\n\nexport const useIsFirstMount = () => {\n const isFirstMount = useRef(true);\n\n if (isFirstMount.current) {\n isFirstMount.current = false;\n return true;\n }\n\n return isFirstMount.current;\n};\n\nexport const useFreshCallback = <T extends (...args: any[]) => any>(callback: T): T => {\n const ref = useRef<T>(callback);\n ref.current = callback;\n return useCallback(((...args) => ref.current(...args)) as T, []);\n};\n\nexport const useDebounceEffect = (action: () => void, delay: number, deps: DependencyList = []) => {\n const timeoutRef = useRef<NodeJS.Timeout>();\n\n useEffect(() => {\n timeoutRef.current = setTimeout(async () => {\n try {\n await action();\n } finally {\n timeoutRef.current = undefined;\n }\n }, delay);\n\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = undefined;\n }\n };\n }, [delay, ...deps]);\n};\n\nexport const usePartialState = <S>(initialState: S) => {\n return useReducer((prev: S, state: Partial<S>) => ({ ...prev, ...state }), initialState);\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useSafeAreaPadding = exports.useAppState = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
|
|
10
|
+
var _reactNative = require("react-native");
|
|
11
|
+
|
|
12
|
+
var _reactNativeSafeAreaContext = require("react-native-safe-area-context");
|
|
13
|
+
|
|
14
|
+
const edgePaddingMap = {
|
|
15
|
+
left: 'paddingLeft',
|
|
16
|
+
right: 'paddingRight',
|
|
17
|
+
top: 'paddingTop',
|
|
18
|
+
bottom: 'paddingBottom'
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const useSafeAreaPadding = edges => {
|
|
22
|
+
const safeAreaInsets = (0, _reactNativeSafeAreaContext.useSafeAreaInsets)();
|
|
23
|
+
return edges.reduce((map, edge) => {
|
|
24
|
+
const paddingKey = edgePaddingMap[edge];
|
|
25
|
+
map[paddingKey] = safeAreaInsets[edge];
|
|
26
|
+
return map;
|
|
27
|
+
}, {});
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
exports.useSafeAreaPadding = useSafeAreaPadding;
|
|
31
|
+
|
|
32
|
+
const useAppState = (type, listener) => {
|
|
33
|
+
const callbackRef = (0, _react.useRef)(listener);
|
|
34
|
+
callbackRef.current = listener;
|
|
35
|
+
(0, _react.useEffect)(() => {
|
|
36
|
+
const eventListener = state => callbackRef.current(state);
|
|
37
|
+
|
|
38
|
+
const subscriber = _reactNative.AppState.addEventListener(type, eventListener);
|
|
39
|
+
|
|
40
|
+
return () => {
|
|
41
|
+
// @ts-ignore
|
|
42
|
+
if (subscriber !== null && subscriber !== void 0 && subscriber.remove) {
|
|
43
|
+
subscriber.remove();
|
|
44
|
+
} // @ts-ignore
|
|
45
|
+
else if (_reactNative.AppState.removeEventListener) {
|
|
46
|
+
// @ts-ignore
|
|
47
|
+
_reactNative.AppState.removeEventListener(type, eventListener);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
}, []);
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
exports.useAppState = useAppState;
|
|
54
|
+
//# sourceMappingURL=react-native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["edgePaddingMap","left","right","top","bottom","useSafeAreaPadding","edges","safeAreaInsets","useSafeAreaInsets","reduce","map","edge","paddingKey","useAppState","type","listener","callbackRef","useRef","current","useEffect","eventListener","state","subscriber","AppState","addEventListener","remove","removeEventListener"],"sources":["react-native.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport { AppState, AppStateEvent, AppStateStatus } from 'react-native';\nimport { EdgeInsets, useSafeAreaInsets } from 'react-native-safe-area-context';\n\ntype EdgePaddingMap = {\n left: 'paddingLeft';\n right: 'paddingRight';\n top: 'paddingTop';\n bottom: 'paddingBottom';\n};\nconst edgePaddingMap: EdgePaddingMap = {\n left: 'paddingLeft',\n right: 'paddingRight',\n top: 'paddingTop',\n bottom: 'paddingBottom',\n};\n\nexport const useSafeAreaPadding = <\n T extends keyof EdgeInsets,\n Result extends { [key in EdgePaddingMap[T]]: EdgeInsets[T] },\n>(\n edges: T[],\n): Result => {\n const safeAreaInsets = useSafeAreaInsets();\n return edges.reduce((map, edge) => {\n const paddingKey = edgePaddingMap[edge];\n map[paddingKey] = safeAreaInsets[edge];\n return map;\n }, {} as { [key in EdgePaddingMap[T]]: EdgeInsets[T] }) as Result;\n};\n\ntype AppStateListener = (status: AppStateStatus) => void;\n\nexport const useAppState = (type: AppStateEvent, listener: AppStateListener) => {\n const callbackRef = useRef<AppStateListener>(listener);\n callbackRef.current = listener;\n\n useEffect(() => {\n const eventListener = (state: AppStateStatus) => callbackRef.current(state);\n const subscriber = AppState.addEventListener(type, eventListener);\n\n return () => {\n // @ts-ignore\n if (subscriber?.remove) {\n subscriber.remove();\n }\n // @ts-ignore\n else if (AppState.removeEventListener) {\n // @ts-ignore\n AppState.removeEventListener(type, eventListener);\n }\n };\n }, []);\n};\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAQA,MAAMA,cAA8B,GAAG;EACrCC,IAAI,EAAE,aAD+B;EAErCC,KAAK,EAAE,cAF8B;EAGrCC,GAAG,EAAE,YAHgC;EAIrCC,MAAM,EAAE;AAJ6B,CAAvC;;AAOO,MAAMC,kBAAkB,GAI7BC,KAJgC,IAKrB;EACX,MAAMC,cAAc,GAAG,IAAAC,6CAAA,GAAvB;EACA,OAAOF,KAAK,CAACG,MAAN,CAAa,CAACC,GAAD,EAAMC,IAAN,KAAe;IACjC,MAAMC,UAAU,GAAGZ,cAAc,CAACW,IAAD,CAAjC;IACAD,GAAG,CAACE,UAAD,CAAH,GAAkBL,cAAc,CAACI,IAAD,CAAhC;IACA,OAAOD,GAAP;EACD,CAJM,EAIJ,EAJI,CAAP;AAKD,CAZM;;;;AAgBA,MAAMG,WAAW,GAAG,CAACC,IAAD,EAAsBC,QAAtB,KAAqD;EAC9E,MAAMC,WAAW,GAAG,IAAAC,aAAA,EAAyBF,QAAzB,CAApB;EACAC,WAAW,CAACE,OAAZ,GAAsBH,QAAtB;EAEA,IAAAI,gBAAA,EAAU,MAAM;IACd,MAAMC,aAAa,GAAIC,KAAD,IAA2BL,WAAW,CAACE,OAAZ,CAAoBG,KAApB,CAAjD;;IACA,MAAMC,UAAU,GAAGC,qBAAA,CAASC,gBAAT,CAA0BV,IAA1B,EAAgCM,aAAhC,CAAnB;;IAEA,OAAO,MAAM;MACX;MACA,IAAIE,UAAJ,aAAIA,UAAJ,eAAIA,UAAU,CAAEG,MAAhB,EAAwB;QACtBH,UAAU,CAACG,MAAX;MACD,CAFD,CAGA;MAHA,KAIK,IAAIF,qBAAA,CAASG,mBAAb,EAAkC;QACrC;QACAH,qBAAA,CAASG,mBAAT,CAA6BZ,IAA7B,EAAmCM,aAAnC;MACD;IACF,CAVD;EAWD,CAfD,EAeG,EAfH;AAgBD,CApBM"}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -9,13 +9,13 @@ var _exportNames = {
|
|
|
9
9
|
PASS: true,
|
|
10
10
|
toMegabyte: true,
|
|
11
11
|
isFunction: true,
|
|
12
|
+
ifThenOr: true,
|
|
12
13
|
SBErrorCode: true,
|
|
13
14
|
SBErrorMessage: true,
|
|
14
15
|
Logger: true,
|
|
15
16
|
arrayToMap: true,
|
|
16
17
|
arrayToMapWithGetter: true,
|
|
17
18
|
createPubSub: true,
|
|
18
|
-
conditionChaining: true,
|
|
19
19
|
urlRegexStrict: true,
|
|
20
20
|
urlRegexRough: true,
|
|
21
21
|
newLineRegex: true,
|
|
@@ -30,8 +30,7 @@ var _exportNames = {
|
|
|
30
30
|
phoneRegex: true,
|
|
31
31
|
replaceWithRegex: true,
|
|
32
32
|
createMentionTemplateRegex: true,
|
|
33
|
-
BufferedRequest: true
|
|
34
|
-
replace: true
|
|
33
|
+
BufferedRequest: true
|
|
35
34
|
};
|
|
36
35
|
exports.ASYNC_NOOP = void 0;
|
|
37
36
|
Object.defineProperty(exports, "BufferedRequest", {
|
|
@@ -65,12 +64,6 @@ Object.defineProperty(exports, "audioExtRegex", {
|
|
|
65
64
|
return _regex.audioExtRegex;
|
|
66
65
|
}
|
|
67
66
|
});
|
|
68
|
-
Object.defineProperty(exports, "conditionChaining", {
|
|
69
|
-
enumerable: true,
|
|
70
|
-
get: function () {
|
|
71
|
-
return _conditionChaining.default;
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
67
|
Object.defineProperty(exports, "createMentionTemplateRegex", {
|
|
75
68
|
enumerable: true,
|
|
76
69
|
get: function () {
|
|
@@ -101,6 +94,7 @@ Object.defineProperty(exports, "getFileType", {
|
|
|
101
94
|
return _regex.getFileType;
|
|
102
95
|
}
|
|
103
96
|
});
|
|
97
|
+
exports.ifThenOr = ifThenOr;
|
|
104
98
|
Object.defineProperty(exports, "imageExtRegex", {
|
|
105
99
|
enumerable: true,
|
|
106
100
|
get: function () {
|
|
@@ -126,12 +120,6 @@ Object.defineProperty(exports, "phoneRegex", {
|
|
|
126
120
|
return _regex.phoneRegex;
|
|
127
121
|
}
|
|
128
122
|
});
|
|
129
|
-
Object.defineProperty(exports, "replace", {
|
|
130
|
-
enumerable: true,
|
|
131
|
-
get: function () {
|
|
132
|
-
return _replace.default;
|
|
133
|
-
}
|
|
134
|
-
});
|
|
135
123
|
Object.defineProperty(exports, "replaceUrlAsComponents", {
|
|
136
124
|
enumerable: true,
|
|
137
125
|
get: function () {
|
|
@@ -170,13 +158,23 @@ var _arrayToMap = _interopRequireWildcard(require("./shared/arrayToMap"));
|
|
|
170
158
|
|
|
171
159
|
var _pubsub = require("./shared/pubsub");
|
|
172
160
|
|
|
173
|
-
var _conditionChaining = _interopRequireDefault(require("./shared/conditionChaining"));
|
|
174
|
-
|
|
175
161
|
var _regex = require("./shared/regex");
|
|
176
162
|
|
|
177
163
|
var _bufferedRequest = require("./shared/bufferedRequest");
|
|
178
164
|
|
|
179
|
-
var
|
|
165
|
+
var _shared = require("./shared");
|
|
166
|
+
|
|
167
|
+
Object.keys(_shared).forEach(function (key) {
|
|
168
|
+
if (key === "default" || key === "__esModule") return;
|
|
169
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
170
|
+
if (key in exports && exports[key] === _shared[key]) return;
|
|
171
|
+
Object.defineProperty(exports, key, {
|
|
172
|
+
enumerable: true,
|
|
173
|
+
get: function () {
|
|
174
|
+
return _shared[key];
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
});
|
|
180
178
|
|
|
181
179
|
var _hooks = require("./hooks");
|
|
182
180
|
|
|
@@ -192,6 +190,20 @@ Object.keys(_hooks).forEach(function (key) {
|
|
|
192
190
|
});
|
|
193
191
|
});
|
|
194
192
|
|
|
193
|
+
var _reactNative = require("./hooks/react-native");
|
|
194
|
+
|
|
195
|
+
Object.keys(_reactNative).forEach(function (key) {
|
|
196
|
+
if (key === "default" || key === "__esModule") return;
|
|
197
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
198
|
+
if (key in exports && exports[key] === _reactNative[key]) return;
|
|
199
|
+
Object.defineProperty(exports, key, {
|
|
200
|
+
enumerable: true,
|
|
201
|
+
get: function () {
|
|
202
|
+
return _reactNative[key];
|
|
203
|
+
}
|
|
204
|
+
});
|
|
205
|
+
});
|
|
206
|
+
|
|
195
207
|
var _groupChannel = require("./ui-format/groupChannel");
|
|
196
208
|
|
|
197
209
|
Object.keys(_groupChannel).forEach(function (key) {
|
|
@@ -206,6 +218,20 @@ Object.keys(_groupChannel).forEach(function (key) {
|
|
|
206
218
|
});
|
|
207
219
|
});
|
|
208
220
|
|
|
221
|
+
var _openChannel = require("./ui-format/openChannel");
|
|
222
|
+
|
|
223
|
+
Object.keys(_openChannel).forEach(function (key) {
|
|
224
|
+
if (key === "default" || key === "__esModule") return;
|
|
225
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
226
|
+
if (key in exports && exports[key] === _openChannel[key]) return;
|
|
227
|
+
Object.defineProperty(exports, key, {
|
|
228
|
+
enumerable: true,
|
|
229
|
+
get: function () {
|
|
230
|
+
return _openChannel[key];
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
});
|
|
234
|
+
|
|
209
235
|
var _common = require("./ui-format/common");
|
|
210
236
|
|
|
211
237
|
Object.keys(_common).forEach(function (key) {
|
|
@@ -276,8 +302,6 @@ Object.keys(_user).forEach(function (key) {
|
|
|
276
302
|
});
|
|
277
303
|
});
|
|
278
304
|
|
|
279
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
280
|
-
|
|
281
305
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
282
306
|
|
|
283
307
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -301,8 +325,16 @@ exports.toMegabyte = toMegabyte;
|
|
|
301
325
|
const isFunction = param => typeof param === 'function';
|
|
302
326
|
|
|
303
327
|
exports.isFunction = isFunction;
|
|
328
|
+
|
|
329
|
+
function ifThenOr(cond, then, or) {
|
|
330
|
+
if (cond) return then;
|
|
331
|
+
return or;
|
|
332
|
+
}
|
|
333
|
+
|
|
304
334
|
const SBErrorCode = {
|
|
305
|
-
NON_AUTHORIZED: 400108
|
|
335
|
+
NON_AUTHORIZED: 400108,
|
|
336
|
+
CHANNEL_NOT_FOUND_SERVER: 400201,
|
|
337
|
+
CHANNEL_NOT_FOUND_SDK: 900500
|
|
306
338
|
};
|
|
307
339
|
exports.SBErrorCode = SBErrorCode;
|
|
308
340
|
const SBErrorMessage = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NOOP","ASYNC_NOOP","PASS","val","toMegabyte","byte","isFunction","param","SBErrorCode","NON_AUTHORIZED","SBErrorMessage","ACL"],"sources":["index.ts"],"sourcesContent":["export { Logger } from './shared/logger';\nexport { default as arrayToMap, arrayToMapWithGetter } from './shared/arrayToMap';\nexport { createPubSub } from './shared/pubsub';\nexport {
|
|
1
|
+
{"version":3,"names":["NOOP","ASYNC_NOOP","PASS","val","toMegabyte","byte","isFunction","param","ifThenOr","cond","then","or","SBErrorCode","NON_AUTHORIZED","CHANNEL_NOT_FOUND_SERVER","CHANNEL_NOT_FOUND_SDK","SBErrorMessage","ACL"],"sources":["index.ts"],"sourcesContent":["export { Logger } from './shared/logger';\nexport { default as arrayToMap, arrayToMapWithGetter } from './shared/arrayToMap';\nexport { createPubSub } from './shared/pubsub';\nexport {\n urlRegexStrict,\n urlRegexRough,\n newLineRegex,\n audioExtRegex,\n videoExtRegex,\n imageExtRegex,\n getFileType,\n getFileExtension,\n replaceUrlAsComponents,\n normalizeFileName,\n emailRegex,\n phoneRegex,\n replaceWithRegex,\n createMentionTemplateRegex,\n} from './shared/regex';\nexport { BufferedRequest } from './shared/bufferedRequest';\n\nexport * from './shared';\n\nexport * from './hooks';\nexport * from './hooks/react-native';\nexport * from './ui-format/groupChannel';\nexport * from './ui-format/openChannel';\nexport * from './ui-format/common';\nexport * from './sendbird/channel';\nexport * from './sendbird/message';\nexport * from './sendbird/attrs';\nexport * from './sendbird/user';\n\nexport const NOOP: () => void = () => void 0;\nexport const ASYNC_NOOP = async () => void 0;\nexport const PASS = <T>(val: T) => val;\nexport const toMegabyte = (byte: number) => byte / 1024 / 1024;\nexport const isFunction = (param?: unknown): param is Function => typeof param === 'function';\n\nexport function ifThenOr<T>(cond: boolean, then: T): T | undefined;\nexport function ifThenOr<T, V>(cond: boolean, then: T, or: V): T | V;\nexport function ifThenOr(cond: boolean, then: unknown, or?: unknown) {\n if (cond) return then;\n return or;\n}\n\nexport const SBErrorCode = {\n NON_AUTHORIZED: 400108,\n CHANNEL_NOT_FOUND_SERVER: 400201,\n CHANNEL_NOT_FOUND_SDK: 900500,\n};\nexport const SBErrorMessage = {\n ACL:\n 'Sendbird provides various access control options when using the Chat SDK.\\n' +\n 'By default, the Allow retrieving user list attribute is turned on to facilitate creating sample apps.\\n' +\n 'However, this may grant access to unwanted data or operations, leading to potential security concerns.\\n' +\n 'To manage your access control settings, you can turn on or off each setting on Sendbird Dashboard.',\n};\n\nexport type {\n UserStruct,\n FilterByValueType,\n UnionToIntersection,\n OmittedValues,\n PartialDeep,\n Optional,\n ContextValue,\n OnBeforeHandler,\n SendbirdMessage,\n SendbirdChatSDK,\n SendbirdChannel,\n SendbirdBaseChannel,\n SendbirdGroupChannel,\n SendbirdOpenChannel,\n SendbirdUser,\n SendbirdMember,\n SendbirdBaseMessage,\n SendbirdUserMessage,\n SendbirdFileMessage,\n SendbirdAdminMessage,\n SendbirdGroupChannelCreateParams,\n SendbirdFileMessageCreateParams,\n SendbirdUserMessageCreateParams,\n SendbirdError,\n SendbirdMessageCollection,\n SendbirdGroupChannelCollection,\n NotificationFiles,\n NotificationMentionedUsers,\n NotificationTranslations,\n PartialNullable,\n SendbirdDataPayload,\n SendbirdPreviousMessageListQuery,\n SendbirdSendableMessage,\n SendbirdOpenChannelListQuery,\n SendbirdGroupChannelListQuery,\n SendbirdGroupChannelUpdateParams,\n SendbirdUserMessageUpdateParams,\n SendbirdFileMessageUpdateParams,\n SendbirdUserUpdateParams,\n SendbirdRestrictedUser,\n SendbirdReaction,\n SendbirdEmojiContainer,\n SendbirdEmoji,\n SendbirdEmojiCategory,\n SendbirdOpenChannelUpdateParams,\n SendbirdOpenChannelCreateParams,\n SendbirdParticipant,\n} from './types';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAgBA;;AAEA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAEA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;;;;;AAEO,MAAMA,IAAgB,GAAG,MAAM,KAAK,CAApC;;;;AACA,MAAMC,UAAU,GAAG,YAAY,KAAK,CAApC;;;;AACA,MAAMC,IAAI,GAAOC,GAAJ,IAAeA,GAA5B;;;;AACA,MAAMC,UAAU,GAAIC,IAAD,IAAkBA,IAAI,GAAG,IAAP,GAAc,IAAnD;;;;AACA,MAAMC,UAAU,GAAIC,KAAD,IAAwC,OAAOA,KAAP,KAAiB,UAA5E;;;;AAIA,SAASC,QAAT,CAAkBC,IAAlB,EAAiCC,IAAjC,EAAgDC,EAAhD,EAA8D;EACnE,IAAIF,IAAJ,EAAU,OAAOC,IAAP;EACV,OAAOC,EAAP;AACD;;AAEM,MAAMC,WAAW,GAAG;EACzBC,cAAc,EAAE,MADS;EAEzBC,wBAAwB,EAAE,MAFD;EAGzBC,qBAAqB,EAAE;AAHE,CAApB;;AAKA,MAAMC,cAAc,GAAG;EAC5BC,GAAG,EACD,gFACA,yGADA,GAEA,0GAFA,GAGA;AAL0B,CAAvB"}
|
|
@@ -5,9 +5,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.confirmAndMarkAsRead = exports.confirmAndMarkAsDelivered = void 0;
|
|
7
7
|
exports.getChannelUniqId = getChannelUniqId;
|
|
8
|
+
exports.getDefaultGroupChannelCreateParams = getDefaultGroupChannelCreateParams;
|
|
8
9
|
exports.getGroupChannelChatAvailableState = void 0;
|
|
9
10
|
exports.getGroupChannels = getGroupChannels;
|
|
10
11
|
exports.getMembersExcludeMe = getMembersExcludeMe;
|
|
12
|
+
exports.getOpenChannelChatAvailableState = void 0;
|
|
11
13
|
exports.getOpenChannels = getOpenChannels;
|
|
12
14
|
exports.isDefaultCoverImage = isDefaultCoverImage;
|
|
13
15
|
exports.isDifferentChannel = isDifferentChannel;
|
|
@@ -26,7 +28,8 @@ function isDifferentChannel(a, b) {
|
|
|
26
28
|
}
|
|
27
29
|
|
|
28
30
|
const getGroupChannelChatAvailableState = channel => {
|
|
29
|
-
const
|
|
31
|
+
const isOperator = channel.myRole === 'operator';
|
|
32
|
+
const frozen = channel.isFrozen && !isOperator;
|
|
30
33
|
const muted = channel.myMutedState === 'muted';
|
|
31
34
|
const disabled = frozen || muted;
|
|
32
35
|
return {
|
|
@@ -38,6 +41,20 @@ const getGroupChannelChatAvailableState = channel => {
|
|
|
38
41
|
|
|
39
42
|
exports.getGroupChannelChatAvailableState = getGroupChannelChatAvailableState;
|
|
40
43
|
|
|
44
|
+
const getOpenChannelChatAvailableState = async (channel, userId) => {
|
|
45
|
+
const isOperator = channel.isOperator(userId);
|
|
46
|
+
const frozen = channel.isFrozen && !isOperator;
|
|
47
|
+
const muted = (await channel.getMyMutedInfo()).isMuted;
|
|
48
|
+
const disabled = frozen || muted;
|
|
49
|
+
return {
|
|
50
|
+
disabled,
|
|
51
|
+
frozen,
|
|
52
|
+
muted
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
exports.getOpenChannelChatAvailableState = getOpenChannelChatAvailableState;
|
|
57
|
+
|
|
41
58
|
const confirmAndMarkAsRead = async channels => {
|
|
42
59
|
channels.filter(it => it.isGroupChannel() && it.unreadMessageCount > 0).forEach(it => _bufferedRequest.BufferedRequest.markAsRead.push(() => it.markAsRead(), it.url));
|
|
43
60
|
};
|
|
@@ -69,4 +86,15 @@ function getOpenChannels(channels) {
|
|
|
69
86
|
function getChannelUniqId(channel) {
|
|
70
87
|
return channel.url;
|
|
71
88
|
}
|
|
89
|
+
|
|
90
|
+
function getDefaultGroupChannelCreateParams(params) {
|
|
91
|
+
const createParams = {
|
|
92
|
+
name: '',
|
|
93
|
+
coverUrl: '',
|
|
94
|
+
isDistinct: false,
|
|
95
|
+
invitedUserIds: params.invitedUserIds
|
|
96
|
+
};
|
|
97
|
+
if (params.currentUserId) createParams.operatorUserIds = [params.currentUserId];
|
|
98
|
+
return createParams;
|
|
99
|
+
}
|
|
72
100
|
//# sourceMappingURL=channel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isDifferentChannel","a","b","url","getGroupChannelChatAvailableState","channel","
|
|
1
|
+
{"version":3,"names":["isDifferentChannel","a","b","url","getGroupChannelChatAvailableState","channel","isOperator","myRole","frozen","isFrozen","muted","myMutedState","disabled","getOpenChannelChatAvailableState","userId","getMyMutedInfo","isMuted","confirmAndMarkAsRead","channels","filter","it","isGroupChannel","unreadMessageCount","forEach","BufferedRequest","markAsRead","push","confirmAndMarkAsDelivered","markAsDelivered","isDefaultCoverImage","coverUrl","startsWith","getMembersExcludeMe","currentUserId","members","m","getGroupChannels","c","getOpenChannels","isOpenChannel","getChannelUniqId","getDefaultGroupChannelCreateParams","params","createParams","name","isDistinct","invitedUserIds","operatorUserIds"],"sources":["channel.ts"],"sourcesContent":["import { BufferedRequest } from '../shared/bufferedRequest';\nimport type {\n SendbirdBaseChannel,\n SendbirdChannel,\n SendbirdGroupChannel,\n SendbirdGroupChannelCreateParams,\n SendbirdOpenChannel,\n} from '../types';\n\n/**\n * Diff utils for channel\n * @param {SendbirdBaseChannel} [a]\n * @param {SendbirdBaseChannel} [b]\n * @returns {boolean}\n * */\nexport function isDifferentChannel<T extends SendbirdBaseChannel>(a?: T, b?: T): boolean {\n if (!a || !b) return true;\n return a.url !== b.url;\n}\n\nexport const getGroupChannelChatAvailableState = (channel: SendbirdGroupChannel) => {\n const isOperator = channel.myRole === 'operator';\n const frozen = channel.isFrozen && !isOperator;\n const muted = channel.myMutedState === 'muted';\n const disabled = frozen || muted;\n return { disabled, frozen, muted };\n};\n\nexport const getOpenChannelChatAvailableState = async (channel: SendbirdOpenChannel, userId: string) => {\n const isOperator = channel.isOperator(userId);\n const frozen = channel.isFrozen && !isOperator;\n const muted = (await channel.getMyMutedInfo()).isMuted;\n const disabled = frozen || muted;\n return { disabled, frozen, muted };\n};\n\nexport const confirmAndMarkAsRead = async (channels: SendbirdBaseChannel[]) => {\n channels\n .filter((it): it is SendbirdGroupChannel => it.isGroupChannel() && it.unreadMessageCount > 0)\n .forEach((it) => BufferedRequest.markAsRead.push(() => it.markAsRead(), it.url));\n};\n\nexport const confirmAndMarkAsDelivered = async (channels: SendbirdBaseChannel[]) => {\n channels\n .filter((it): it is SendbirdGroupChannel => it.isGroupChannel() && it.unreadMessageCount > 0)\n .forEach((it) => BufferedRequest.markAsDelivered.push(() => it.markAsDelivered(), it.url));\n};\n\nexport function isDefaultCoverImage(coverUrl: string) {\n return coverUrl === '' || coverUrl.startsWith('https://static.sendbird.com/sample/cover');\n}\n\nexport function getMembersExcludeMe(channel: SendbirdGroupChannel, currentUserId?: string) {\n return channel.members.filter((m) => m.userId !== currentUserId);\n}\n\nexport function getGroupChannels(channels: SendbirdChannel[]): SendbirdGroupChannel[] {\n return channels.filter((c): c is SendbirdGroupChannel => c.isGroupChannel());\n}\n\nexport function getOpenChannels(channels: SendbirdChannel[]): SendbirdOpenChannel[] {\n return channels.filter((c): c is SendbirdOpenChannel => c.isOpenChannel());\n}\n\nexport function getChannelUniqId(channel: SendbirdChannel) {\n return channel.url;\n}\n\nexport function getDefaultGroupChannelCreateParams(params: {\n invitedUserIds: string[];\n currentUserId?: string;\n}): SendbirdGroupChannelCreateParams {\n const createParams: SendbirdGroupChannelCreateParams = {\n name: '',\n coverUrl: '',\n isDistinct: false,\n invitedUserIds: params.invitedUserIds,\n };\n\n if (params.currentUserId) createParams.operatorUserIds = [params.currentUserId];\n\n return createParams;\n}\n"],"mappings":"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"}
|
|
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.calcMessageGrouping = calcMessageGrouping;
|
|
7
7
|
exports.getAvailableUriFromFileMessage = getAvailableUriFromFileMessage;
|
|
8
|
+
exports.getFileTypeFromMessage = getFileTypeFromMessage;
|
|
9
|
+
exports.getMessageType = getMessageType;
|
|
8
10
|
exports.getMessageUniqId = getMessageUniqId;
|
|
9
11
|
exports.getReactionCount = getReactionCount;
|
|
10
12
|
exports.hasSameSender = hasSameSender;
|
|
@@ -17,6 +19,8 @@ exports.messageKeyExtractor = messageKeyExtractor;
|
|
|
17
19
|
exports.parseSendbirdNotification = parseSendbirdNotification;
|
|
18
20
|
exports.shouldRenderReaction = shouldRenderReaction;
|
|
19
21
|
|
|
22
|
+
var _regex = require("../shared/regex");
|
|
23
|
+
|
|
20
24
|
var _common = require("../ui-format/common");
|
|
21
25
|
|
|
22
26
|
function isNewMessage(msg, currentUserId) {
|
|
@@ -118,10 +122,61 @@ function parseSendbirdNotification(dataPayload) {
|
|
|
118
122
|
}
|
|
119
123
|
|
|
120
124
|
function shouldRenderReaction(channel, reactionEnabled) {
|
|
121
|
-
|
|
125
|
+
if (channel.isOpenChannel()) {
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
if (channel.isGroupChannel()) {
|
|
130
|
+
if (channel.isBroadcast) return false;
|
|
131
|
+
if (channel.isSuper) return false;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
return reactionEnabled;
|
|
122
135
|
}
|
|
123
136
|
|
|
124
137
|
function getReactionCount(reaction) {
|
|
125
138
|
return reaction.userIds.length;
|
|
126
139
|
}
|
|
140
|
+
|
|
141
|
+
function getFileTypeFromMessage(message) {
|
|
142
|
+
return (0, _regex.getFileType)(message.type || (0, _regex.getFileExtension)(message.name));
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
function getMessageType(message) {
|
|
146
|
+
if (message.isAdminMessage()) {
|
|
147
|
+
return 'admin';
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
if (message.isUserMessage()) {
|
|
151
|
+
if (message.ogMetaData) {
|
|
152
|
+
return 'user.opengraph';
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
return 'user';
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
if (message.isFileMessage()) {
|
|
159
|
+
const fileType = getFileTypeFromMessage(message);
|
|
160
|
+
|
|
161
|
+
switch (fileType) {
|
|
162
|
+
case 'image':
|
|
163
|
+
case 'video':
|
|
164
|
+
{
|
|
165
|
+
return `file.${fileType}`;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
case 'audio':
|
|
169
|
+
{
|
|
170
|
+
return `file.${fileType}`;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
default:
|
|
174
|
+
{
|
|
175
|
+
return 'file';
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
return 'unknown';
|
|
181
|
+
}
|
|
127
182
|
//# sourceMappingURL=message.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isNewMessage","msg","currentUserId","myMessage","isMyMessage","isAdminMessage","updatedAt","isSendableMessage","undefined","sender","userId","sendingStatus","messageKeyExtractor","message","getMessageUniqId","messageComparator","a","b","aStatusOffset","bStatusOffset","createdAt","hasSameSender","calcMessageGrouping","groupEnabled","curr","prev","next","getPrev","getMessageTimeFormat","Date","getNext","groupWithPrev","groupWithNext","isUserMessage","isFileMessage","String","messageId","reqId","getAvailableUriFromFileMessage","url","messageParams","file","uri","isSendbirdNotification","dataPayload","Boolean","parseSendbirdNotification","sendbird","JSON","parse","shouldRenderReaction","channel","reactionEnabled","isGroupChannel","isBroadcast","isSuper","getReactionCount","reaction","userIds","length"],"sources":["message.ts"],"sourcesContent":["import type {\n SendbirdBaseChannel,\n SendbirdBaseMessage,\n SendbirdDataPayload,\n SendbirdFileMessage,\n SendbirdMessage,\n SendbirdReaction,\n SendbirdSendableMessage,\n} from '../types';\nimport { getMessageTimeFormat } from '../ui-format/common';\n\nexport function isNewMessage(msg: SendbirdMessage, currentUserId?: string) {\n const myMessage = isMyMessage(msg, currentUserId);\n if (myMessage) return false;\n if (msg.isAdminMessage()) return false;\n return msg.updatedAt === 0;\n}\n\nexport function isSendableMessage(msg?: SendbirdMessage | null): msg is SendbirdSendableMessage {\n return msg !== undefined && msg !== null && 'sendingStatus' in msg;\n}\n\nexport function isMyMessage(msg?: SendbirdMessage | null, currentUserId = '##__USER_ID_IS_NOT_PROVIDED__##') {\n if (!isSendableMessage(msg)) return false;\n return (\n ('sender' in msg && msg.sender?.userId === currentUserId) ||\n msg.sendingStatus === 'pending' ||\n msg.sendingStatus === 'failed' ||\n msg.sendingStatus === 'canceled'\n );\n}\n\nexport function messageKeyExtractor(message: SendbirdMessage): string {\n return getMessageUniqId(message);\n}\n\n// |-------------------|-------------------|-----------------|-------------------|\n// | sending status | reqId | messageId | createdAt |\n// |-------------------|-------------------|-----------------|-------------------|\n// | pending | timestamp(A) | 0 | timestamp(B) |\n// | canceled | timestamp(A) | 0 | ? |\n// | failed | timestamp(A) | 0 | ? |\n// | succeeded | timestamp(A) / '' | id from DB | timestamp(C) |\n// |-------------------|-------------------|-----------------|-------------------|\nexport function messageComparator(a: SendbirdMessage, b: SendbirdMessage) {\n let aStatusOffset = 0;\n let bStatusOffset = 0;\n\n if (isSendableMessage(a) && a.sendingStatus !== 'succeeded') aStatusOffset = 999999;\n if (isSendableMessage(b) && b.sendingStatus !== 'succeeded') bStatusOffset = 999999;\n\n return b.createdAt + bStatusOffset - (a.createdAt + aStatusOffset);\n}\n\nexport function hasSameSender(a?: SendbirdMessage, b?: SendbirdMessage) {\n if (!a || !b) return false;\n if ('sender' in a && 'sender' in b) return a.sender?.userId === b.sender?.userId;\n return false;\n}\n\nexport function calcMessageGrouping(\n groupEnabled: boolean,\n curr: SendbirdMessage,\n prev?: SendbirdMessage,\n next?: SendbirdMessage,\n) {\n const getPrev = () => {\n if (!groupEnabled) return false;\n if (!prev) return false;\n if (curr.isAdminMessage()) return false;\n if (!hasSameSender(curr, prev)) return false;\n if (getMessageTimeFormat(new Date(curr.createdAt)) !== getMessageTimeFormat(new Date(prev.createdAt))) return false;\n return true;\n };\n\n const getNext = () => {\n if (!groupEnabled) return false;\n if (!next) return false;\n if (curr.isAdminMessage()) return false;\n if (!hasSameSender(curr, next)) return false;\n if (getMessageTimeFormat(new Date(curr.createdAt)) !== getMessageTimeFormat(new Date(next.createdAt))) return false;\n return true;\n };\n\n return { groupWithPrev: getPrev(), groupWithNext: getNext() };\n}\n\nexport function getMessageUniqId(msg: SendbirdBaseMessage) {\n if (msg.isUserMessage() || msg.isFileMessage()) {\n if (msg.sendingStatus === 'succeeded') return String(msg.messageId);\n return msg.reqId;\n }\n\n return String(msg.messageId);\n}\n\nexport function getAvailableUriFromFileMessage(message: SendbirdFileMessage) {\n if (!message.url && message.messageParams.file && 'uri' in message.messageParams.file) {\n return message.messageParams.file.uri;\n }\n return message.url;\n}\n\ntype RawSendbirdDataPayload = { sendbird: string | object };\nexport function isSendbirdNotification(dataPayload?: {\n [key: string]: string | object;\n}): dataPayload is RawSendbirdDataPayload {\n if (!dataPayload) return false;\n return Boolean(dataPayload['sendbird']);\n}\n\nexport function parseSendbirdNotification(dataPayload: RawSendbirdDataPayload): SendbirdDataPayload {\n return typeof dataPayload.sendbird === 'string' ? JSON.parse(dataPayload.sendbird) : dataPayload.sendbird;\n}\n\nexport function shouldRenderReaction(channel: SendbirdBaseChannel, reactionEnabled: boolean) {\n return channel.isGroupChannel() && !channel.isBroadcast && !channel.isSuper && reactionEnabled;\n}\n\nexport function getReactionCount(reaction: SendbirdReaction) {\n return reaction.userIds.length;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["isNewMessage","msg","currentUserId","myMessage","isMyMessage","isAdminMessage","updatedAt","isSendableMessage","undefined","sender","userId","sendingStatus","messageKeyExtractor","message","getMessageUniqId","messageComparator","a","b","aStatusOffset","bStatusOffset","createdAt","hasSameSender","calcMessageGrouping","groupEnabled","curr","prev","next","getPrev","getMessageTimeFormat","Date","getNext","groupWithPrev","groupWithNext","isUserMessage","isFileMessage","String","messageId","reqId","getAvailableUriFromFileMessage","url","messageParams","file","uri","isSendbirdNotification","dataPayload","Boolean","parseSendbirdNotification","sendbird","JSON","parse","shouldRenderReaction","channel","reactionEnabled","isOpenChannel","isGroupChannel","isBroadcast","isSuper","getReactionCount","reaction","userIds","length","getFileTypeFromMessage","getFileType","type","getFileExtension","name","getMessageType","ogMetaData","fileType"],"sources":["message.ts"],"sourcesContent":["import { getFileExtension, getFileType } from '../shared/regex';\nimport type {\n SendbirdBaseChannel,\n SendbirdBaseMessage,\n SendbirdDataPayload,\n SendbirdFileMessage,\n SendbirdMessage,\n SendbirdReaction,\n SendbirdSendableMessage,\n} from '../types';\nimport { getMessageTimeFormat } from '../ui-format/common';\n\nexport function isNewMessage(msg: SendbirdMessage, currentUserId?: string) {\n const myMessage = isMyMessage(msg, currentUserId);\n if (myMessage) return false;\n if (msg.isAdminMessage()) return false;\n return msg.updatedAt === 0;\n}\n\nexport function isSendableMessage(msg?: SendbirdMessage | null): msg is SendbirdSendableMessage {\n return msg !== undefined && msg !== null && 'sendingStatus' in msg;\n}\n\nexport function isMyMessage(msg?: SendbirdMessage | null, currentUserId = '##__USER_ID_IS_NOT_PROVIDED__##') {\n if (!isSendableMessage(msg)) return false;\n return (\n ('sender' in msg && msg.sender?.userId === currentUserId) ||\n msg.sendingStatus === 'pending' ||\n msg.sendingStatus === 'failed' ||\n msg.sendingStatus === 'canceled'\n );\n}\n\nexport function messageKeyExtractor(message: SendbirdMessage): string {\n return getMessageUniqId(message);\n}\n\n// |-------------------|-------------------|-----------------|-------------------|\n// | sending status | reqId | messageId | createdAt |\n// |-------------------|-------------------|-----------------|-------------------|\n// | pending | timestamp(A) | 0 | timestamp(B) |\n// | canceled | timestamp(A) | 0 | ? |\n// | failed | timestamp(A) | 0 | ? |\n// | succeeded | timestamp(A) / '' | id from DB | timestamp(C) |\n// |-------------------|-------------------|-----------------|-------------------|\nexport function messageComparator(a: SendbirdMessage, b: SendbirdMessage) {\n let aStatusOffset = 0;\n let bStatusOffset = 0;\n\n if (isSendableMessage(a) && a.sendingStatus !== 'succeeded') aStatusOffset = 999999;\n if (isSendableMessage(b) && b.sendingStatus !== 'succeeded') bStatusOffset = 999999;\n\n return b.createdAt + bStatusOffset - (a.createdAt + aStatusOffset);\n}\n\nexport function hasSameSender(a?: SendbirdMessage, b?: SendbirdMessage) {\n if (!a || !b) return false;\n if ('sender' in a && 'sender' in b) return a.sender?.userId === b.sender?.userId;\n return false;\n}\n\nexport function calcMessageGrouping(\n groupEnabled: boolean,\n curr: SendbirdMessage,\n prev?: SendbirdMessage,\n next?: SendbirdMessage,\n) {\n const getPrev = () => {\n if (!groupEnabled) return false;\n if (!prev) return false;\n if (curr.isAdminMessage()) return false;\n if (!hasSameSender(curr, prev)) return false;\n if (getMessageTimeFormat(new Date(curr.createdAt)) !== getMessageTimeFormat(new Date(prev.createdAt))) return false;\n return true;\n };\n\n const getNext = () => {\n if (!groupEnabled) return false;\n if (!next) return false;\n if (curr.isAdminMessage()) return false;\n if (!hasSameSender(curr, next)) return false;\n if (getMessageTimeFormat(new Date(curr.createdAt)) !== getMessageTimeFormat(new Date(next.createdAt))) return false;\n return true;\n };\n\n return { groupWithPrev: getPrev(), groupWithNext: getNext() };\n}\n\nexport function getMessageUniqId(msg: SendbirdBaseMessage) {\n if (msg.isUserMessage() || msg.isFileMessage()) {\n if (msg.sendingStatus === 'succeeded') return String(msg.messageId);\n return msg.reqId;\n }\n\n return String(msg.messageId);\n}\n\nexport function getAvailableUriFromFileMessage(message: SendbirdFileMessage) {\n if (!message.url && message.messageParams.file && 'uri' in message.messageParams.file) {\n return message.messageParams.file.uri;\n }\n return message.url;\n}\n\ntype RawSendbirdDataPayload = { sendbird: string | object };\nexport function isSendbirdNotification(dataPayload?: {\n [key: string]: string | object;\n}): dataPayload is RawSendbirdDataPayload {\n if (!dataPayload) return false;\n return Boolean(dataPayload['sendbird']);\n}\n\nexport function parseSendbirdNotification(dataPayload: RawSendbirdDataPayload): SendbirdDataPayload {\n return typeof dataPayload.sendbird === 'string' ? JSON.parse(dataPayload.sendbird) : dataPayload.sendbird;\n}\n\nexport function shouldRenderReaction(channel: SendbirdBaseChannel, reactionEnabled: boolean) {\n if (channel.isOpenChannel()) {\n return false;\n }\n\n if (channel.isGroupChannel()) {\n if (channel.isBroadcast) return false;\n if (channel.isSuper) return false;\n }\n\n return reactionEnabled;\n}\n\nexport function getReactionCount(reaction: SendbirdReaction) {\n return reaction.userIds.length;\n}\n\ntype MessageType =\n | 'user'\n | 'admin'\n | 'file'\n | 'unknown'\n | `user.${'opengraph'}`\n | `file.${'image' | 'video' | 'audio'}`;\n\nexport function getFileTypeFromMessage(message: SendbirdFileMessage) {\n return getFileType(message.type || getFileExtension(message.name));\n}\n\nexport function getMessageType(message: SendbirdMessage): MessageType {\n if (message.isAdminMessage()) {\n return 'admin';\n }\n\n if (message.isUserMessage()) {\n if (message.ogMetaData) {\n return 'user.opengraph';\n }\n return 'user';\n }\n\n if (message.isFileMessage()) {\n const fileType = getFileTypeFromMessage(message);\n switch (fileType) {\n case 'image':\n case 'video': {\n return `file.${fileType}`;\n }\n case 'audio': {\n return `file.${fileType}`;\n }\n default: {\n return 'file';\n }\n }\n }\n\n return 'unknown';\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AAUA;;AAEO,SAASA,YAAT,CAAsBC,GAAtB,EAA4CC,aAA5C,EAAoE;EACzE,MAAMC,SAAS,GAAGC,WAAW,CAACH,GAAD,EAAMC,aAAN,CAA7B;EACA,IAAIC,SAAJ,EAAe,OAAO,KAAP;EACf,IAAIF,GAAG,CAACI,cAAJ,EAAJ,EAA0B,OAAO,KAAP;EAC1B,OAAOJ,GAAG,CAACK,SAAJ,KAAkB,CAAzB;AACD;;AAEM,SAASC,iBAAT,CAA2BN,GAA3B,EAAyF;EAC9F,OAAOA,GAAG,KAAKO,SAAR,IAAqBP,GAAG,KAAK,IAA7B,IAAqC,mBAAmBA,GAA/D;AACD;;AAEM,SAASG,WAAT,CAAqBH,GAArB,EAAsG;EAAA;;EAAA,IAAnDC,aAAmD,uEAAnC,iCAAmC;EAC3G,IAAI,CAACK,iBAAiB,CAACN,GAAD,CAAtB,EAA6B,OAAO,KAAP;EAC7B,OACG,YAAYA,GAAZ,IAAmB,gBAAAA,GAAG,CAACQ,MAAJ,4DAAYC,MAAZ,MAAuBR,aAA3C,IACAD,GAAG,CAACU,aAAJ,KAAsB,SADtB,IAEAV,GAAG,CAACU,aAAJ,KAAsB,QAFtB,IAGAV,GAAG,CAACU,aAAJ,KAAsB,UAJxB;AAMD;;AAEM,SAASC,mBAAT,CAA6BC,OAA7B,EAA+D;EACpE,OAAOC,gBAAgB,CAACD,OAAD,CAAvB;AACD,C,CAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASE,iBAAT,CAA2BC,CAA3B,EAA+CC,CAA/C,EAAmE;EACxE,IAAIC,aAAa,GAAG,CAApB;EACA,IAAIC,aAAa,GAAG,CAApB;EAEA,IAAIZ,iBAAiB,CAACS,CAAD,CAAjB,IAAwBA,CAAC,CAACL,aAAF,KAAoB,WAAhD,EAA6DO,aAAa,GAAG,MAAhB;EAC7D,IAAIX,iBAAiB,CAACU,CAAD,CAAjB,IAAwBA,CAAC,CAACN,aAAF,KAAoB,WAAhD,EAA6DQ,aAAa,GAAG,MAAhB;EAE7D,OAAOF,CAAC,CAACG,SAAF,GAAcD,aAAd,IAA+BH,CAAC,CAACI,SAAF,GAAcF,aAA7C,CAAP;AACD;;AAEM,SAASG,aAAT,CAAuBL,CAAvB,EAA4CC,CAA5C,EAAiE;EAAA;;EACtE,IAAI,CAACD,CAAD,IAAM,CAACC,CAAX,EAAc,OAAO,KAAP;EACd,IAAI,YAAYD,CAAZ,IAAiB,YAAYC,CAAjC,EAAoC,OAAO,cAAAD,CAAC,CAACP,MAAF,wDAAUC,MAAV,oBAAqBO,CAAC,CAACR,MAAvB,8CAAqB,UAAUC,MAA/B,CAAP;EACpC,OAAO,KAAP;AACD;;AAEM,SAASY,mBAAT,CACLC,YADK,EAELC,IAFK,EAGLC,IAHK,EAILC,IAJK,EAKL;EACA,MAAMC,OAAO,GAAG,MAAM;IACpB,IAAI,CAACJ,YAAL,EAAmB,OAAO,KAAP;IACnB,IAAI,CAACE,IAAL,EAAW,OAAO,KAAP;IACX,IAAID,IAAI,CAACnB,cAAL,EAAJ,EAA2B,OAAO,KAAP;IAC3B,IAAI,CAACgB,aAAa,CAACG,IAAD,EAAOC,IAAP,CAAlB,EAAgC,OAAO,KAAP;IAChC,IAAI,IAAAG,4BAAA,EAAqB,IAAIC,IAAJ,CAASL,IAAI,CAACJ,SAAd,CAArB,MAAmD,IAAAQ,4BAAA,EAAqB,IAAIC,IAAJ,CAASJ,IAAI,CAACL,SAAd,CAArB,CAAvD,EAAuG,OAAO,KAAP;IACvG,OAAO,IAAP;EACD,CAPD;;EASA,MAAMU,OAAO,GAAG,MAAM;IACpB,IAAI,CAACP,YAAL,EAAmB,OAAO,KAAP;IACnB,IAAI,CAACG,IAAL,EAAW,OAAO,KAAP;IACX,IAAIF,IAAI,CAACnB,cAAL,EAAJ,EAA2B,OAAO,KAAP;IAC3B,IAAI,CAACgB,aAAa,CAACG,IAAD,EAAOE,IAAP,CAAlB,EAAgC,OAAO,KAAP;IAChC,IAAI,IAAAE,4BAAA,EAAqB,IAAIC,IAAJ,CAASL,IAAI,CAACJ,SAAd,CAArB,MAAmD,IAAAQ,4BAAA,EAAqB,IAAIC,IAAJ,CAASH,IAAI,CAACN,SAAd,CAArB,CAAvD,EAAuG,OAAO,KAAP;IACvG,OAAO,IAAP;EACD,CAPD;;EASA,OAAO;IAAEW,aAAa,EAAEJ,OAAO,EAAxB;IAA4BK,aAAa,EAAEF,OAAO;EAAlD,CAAP;AACD;;AAEM,SAAShB,gBAAT,CAA0Bb,GAA1B,EAAoD;EACzD,IAAIA,GAAG,CAACgC,aAAJ,MAAuBhC,GAAG,CAACiC,aAAJ,EAA3B,EAAgD;IAC9C,IAAIjC,GAAG,CAACU,aAAJ,KAAsB,WAA1B,EAAuC,OAAOwB,MAAM,CAAClC,GAAG,CAACmC,SAAL,CAAb;IACvC,OAAOnC,GAAG,CAACoC,KAAX;EACD;;EAED,OAAOF,MAAM,CAAClC,GAAG,CAACmC,SAAL,CAAb;AACD;;AAEM,SAASE,8BAAT,CAAwCzB,OAAxC,EAAsE;EAC3E,IAAI,CAACA,OAAO,CAAC0B,GAAT,IAAgB1B,OAAO,CAAC2B,aAAR,CAAsBC,IAAtC,IAA8C,SAAS5B,OAAO,CAAC2B,aAAR,CAAsBC,IAAjF,EAAuF;IACrF,OAAO5B,OAAO,CAAC2B,aAAR,CAAsBC,IAAtB,CAA2BC,GAAlC;EACD;;EACD,OAAO7B,OAAO,CAAC0B,GAAf;AACD;;AAGM,SAASI,sBAAT,CAAgCC,WAAhC,EAEmC;EACxC,IAAI,CAACA,WAAL,EAAkB,OAAO,KAAP;EAClB,OAAOC,OAAO,CAACD,WAAW,CAAC,UAAD,CAAZ,CAAd;AACD;;AAEM,SAASE,yBAAT,CAAmCF,WAAnC,EAA6F;EAClG,OAAO,OAAOA,WAAW,CAACG,QAAnB,KAAgC,QAAhC,GAA2CC,IAAI,CAACC,KAAL,CAAWL,WAAW,CAACG,QAAvB,CAA3C,GAA8EH,WAAW,CAACG,QAAjG;AACD;;AAEM,SAASG,oBAAT,CAA8BC,OAA9B,EAA4DC,eAA5D,EAAsF;EAC3F,IAAID,OAAO,CAACE,aAAR,EAAJ,EAA6B;IAC3B,OAAO,KAAP;EACD;;EAED,IAAIF,OAAO,CAACG,cAAR,EAAJ,EAA8B;IAC5B,IAAIH,OAAO,CAACI,WAAZ,EAAyB,OAAO,KAAP;IACzB,IAAIJ,OAAO,CAACK,OAAZ,EAAqB,OAAO,KAAP;EACtB;;EAED,OAAOJ,eAAP;AACD;;AAEM,SAASK,gBAAT,CAA0BC,QAA1B,EAAsD;EAC3D,OAAOA,QAAQ,CAACC,OAAT,CAAiBC,MAAxB;AACD;;AAUM,SAASC,sBAAT,CAAgChD,OAAhC,EAA8D;EACnE,OAAO,IAAAiD,kBAAA,EAAYjD,OAAO,CAACkD,IAAR,IAAgB,IAAAC,uBAAA,EAAiBnD,OAAO,CAACoD,IAAzB,CAA5B,CAAP;AACD;;AAEM,SAASC,cAAT,CAAwBrD,OAAxB,EAA+D;EACpE,IAAIA,OAAO,CAACR,cAAR,EAAJ,EAA8B;IAC5B,OAAO,OAAP;EACD;;EAED,IAAIQ,OAAO,CAACoB,aAAR,EAAJ,EAA6B;IAC3B,IAAIpB,OAAO,CAACsD,UAAZ,EAAwB;MACtB,OAAO,gBAAP;IACD;;IACD,OAAO,MAAP;EACD;;EAED,IAAItD,OAAO,CAACqB,aAAR,EAAJ,EAA6B;IAC3B,MAAMkC,QAAQ,GAAGP,sBAAsB,CAAChD,OAAD,CAAvC;;IACA,QAAQuD,QAAR;MACE,KAAK,OAAL;MACA,KAAK,OAAL;QAAc;UACZ,OAAQ,QAAOA,QAAS,EAAxB;QACD;;MACD,KAAK,OAAL;QAAc;UACZ,OAAQ,QAAOA,QAAS,EAAxB;QACD;;MACD;QAAS;UACP,OAAO,MAAP;QACD;IAVH;EAYD;;EAED,OAAO,SAAP;AACD"}
|
|
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.getUserUniqId = getUserUniqId;
|
|
7
|
-
exports.ifMuted = ifMuted;
|
|
8
7
|
exports.ifOperator = ifOperator;
|
|
9
8
|
|
|
10
9
|
function ifOperator(role, then, or) {
|
|
@@ -12,11 +11,6 @@ function ifOperator(role, then, or) {
|
|
|
12
11
|
return or;
|
|
13
12
|
}
|
|
14
13
|
|
|
15
|
-
function ifMuted(muted, then, or) {
|
|
16
|
-
if (muted) return then;
|
|
17
|
-
return or;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
14
|
function getUserUniqId(user) {
|
|
21
15
|
return user.userId;
|
|
22
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ifOperator","role","then","or","
|
|
1
|
+
{"version":3,"names":["ifOperator","role","then","or","getUserUniqId","user","userId"],"sources":["user.ts"],"sourcesContent":["import type { Role } from '@sendbird/chat';\n\nimport type { UserStruct } from '../types';\n\nexport function ifOperator<T>(role: Role, then: T): T | undefined;\nexport function ifOperator<T, V>(role: Role, then: T, or: V): T | V;\nexport function ifOperator(role: Role, then: unknown, or?: unknown) {\n if (role === 'operator') return then;\n return or;\n}\n\nexport function getUserUniqId<T extends UserStruct>(user: T) {\n return user.userId;\n}\n"],"mappings":";;;;;;;;AAMO,SAASA,UAAT,CAAoBC,IAApB,EAAgCC,IAAhC,EAA+CC,EAA/C,EAA6D;EAClE,IAAIF,IAAI,KAAK,UAAb,EAAyB,OAAOC,IAAP;EACzB,OAAOC,EAAP;AACD;;AAEM,SAASC,aAAT,CAA6CC,IAA7C,EAAsD;EAC3D,OAAOA,IAAI,CAACC,MAAZ;AACD"}
|