stream-chat-react-native-core 5.13.1-beta.1 → 5.14.0-beta.1
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/components/Channel/Channel.js +25 -23
- package/lib/commonjs/components/Channel/Channel.js.map +1 -1
- package/lib/commonjs/index.js +12 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/utils/StreamChatRN.js +26 -0
- package/lib/commonjs/utils/StreamChatRN.js.map +1 -0
- package/lib/commonjs/utils/getResizedImageUrl.js +4 -1
- package/lib/commonjs/utils/getResizedImageUrl.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Channel/Channel.js +25 -23
- package/lib/module/components/Channel/Channel.js.map +1 -1
- package/lib/module/index.js +12 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/utils/StreamChatRN.js +26 -0
- package/lib/module/utils/StreamChatRN.js.map +1 -0
- package/lib/module/utils/getResizedImageUrl.js +4 -1
- package/lib/module/utils/getResizedImageUrl.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/index.d.ts +1 -0
- package/lib/typescript/utils/StreamChatRN.d.ts +20 -0
- package/lib/typescript/utils/getResizedImageUrl.d.ts +1 -2
- package/package.json +1 -1
- package/src/components/Channel/Channel.tsx +3 -2
- package/src/index.ts +1 -0
- package/src/utils/StreamChatRN.ts +25 -0
- package/src/utils/__tests__/getResizedImageUrl.test.ts +79 -0
- package/src/utils/getResizedImageUrl.ts +9 -3
- package/src/version.json +1 -1
- package/src/utils/__tests__/getResizedImageUrl.test.js +0 -57
package/lib/module/index.js
CHANGED
|
@@ -200,6 +200,18 @@ Object.keys(_utils).forEach(function (key) {
|
|
|
200
200
|
}
|
|
201
201
|
});
|
|
202
202
|
});
|
|
203
|
+
var _StreamChatRN = require("./utils/StreamChatRN");
|
|
204
|
+
Object.keys(_StreamChatRN).forEach(function (key) {
|
|
205
|
+
if (key === "default" || key === "__esModule") return;
|
|
206
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
207
|
+
if (key in exports && exports[key] === _StreamChatRN[key]) return;
|
|
208
|
+
Object.defineProperty(exports, key, {
|
|
209
|
+
enumerable: true,
|
|
210
|
+
get: function get() {
|
|
211
|
+
return _StreamChatRN[key];
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
});
|
|
203
215
|
var _en = _interopRequireDefault(require("./i18n/en.json"));
|
|
204
216
|
var _fr = _interopRequireDefault(require("./i18n/fr.json"));
|
|
205
217
|
var _hi = _interopRequireDefault(require("./i18n/hi.json"));
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_components","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_hooks","_native","_contexts","_compiled","_icons","_types","_patchMessageTextCommand","_Streami18n","_utils","_en","_interopRequireDefault","_fr","_hi","_it","_nl","_ru","_tr","_he","_QuickSqliteClient","_version","OfflineStoreApis","_interopRequireWildcard","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","desc","set"],"sources":["index.ts"],"sourcesContent":["export * from './components';\nexport * from './hooks';\nexport { registerNativeHandlers, NetInfo } from './native';\nexport * from './contexts';\nexport * from './emoji-data/compiled';\n\nexport * from './icons';\n\nexport * from './types/types';\n\nexport * from './utils/patchMessageTextCommand';\nexport * from './utils/Streami18n';\nexport * from './utils/utils';\n\nexport { default as enTranslations } from './i18n/en.json';\nexport { default as frTranslations } from './i18n/fr.json';\nexport { default as hiTranslations } from './i18n/hi.json';\nexport { default as itTranslations } from './i18n/it.json';\nexport { default as nlTranslations } from './i18n/nl.json';\nexport { default as ruTranslations } from './i18n/ru.json';\nexport { default as trTranslations } from './i18n/tr.json';\nexport { default as heTranslations } from './i18n/he.json';\n\nexport { QuickSqliteClient } from './store/QuickSqliteClient';\nexport { version } from './version.json';\n\nimport * as OfflineStoreApis from './store/apis';\nexport { OfflineStoreApis };\n"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["_components","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_hooks","_native","_contexts","_compiled","_icons","_types","_patchMessageTextCommand","_Streami18n","_utils","_StreamChatRN","_en","_interopRequireDefault","_fr","_hi","_it","_nl","_ru","_tr","_he","_QuickSqliteClient","_version","OfflineStoreApis","_interopRequireWildcard","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","desc","set"],"sources":["index.ts"],"sourcesContent":["export * from './components';\nexport * from './hooks';\nexport { registerNativeHandlers, NetInfo } from './native';\nexport * from './contexts';\nexport * from './emoji-data/compiled';\n\nexport * from './icons';\n\nexport * from './types/types';\n\nexport * from './utils/patchMessageTextCommand';\nexport * from './utils/Streami18n';\nexport * from './utils/utils';\nexport * from './utils/StreamChatRN';\n\nexport { default as enTranslations } from './i18n/en.json';\nexport { default as frTranslations } from './i18n/fr.json';\nexport { default as hiTranslations } from './i18n/hi.json';\nexport { default as itTranslations } from './i18n/it.json';\nexport { default as nlTranslations } from './i18n/nl.json';\nexport { default as ruTranslations } from './i18n/ru.json';\nexport { default as trTranslations } from './i18n/tr.json';\nexport { default as heTranslations } from './i18n/he.json';\n\nexport { QuickSqliteClient } from './store/QuickSqliteClient';\nexport { version } from './version.json';\n\nimport * as OfflineStoreApis from './store/apis';\nexport { OfflineStoreApis };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,WAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAL,WAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAb,WAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,MAAA,GAAAb,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAW,MAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,MAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAC,MAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AACA,IAAAU,OAAA,GAAAd,OAAA;AACA,IAAAe,SAAA,GAAAf,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAa,SAAA,EAAAZ,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAW,SAAA,CAAAX,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAG,SAAA,CAAAX,GAAA;IAAA;EAAA;AAAA;AACA,IAAAY,SAAA,GAAAhB,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAc,SAAA,EAAAb,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAY,SAAA,CAAAZ,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAI,SAAA,CAAAZ,GAAA;IAAA;EAAA;AAAA;AAEA,IAAAa,MAAA,GAAAjB,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAe,MAAA,EAAAd,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAa,MAAA,CAAAb,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAK,MAAA,CAAAb,GAAA;IAAA;EAAA;AAAA;AAEA,IAAAc,MAAA,GAAAlB,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAgB,MAAA,EAAAf,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAc,MAAA,CAAAd,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAM,MAAA,CAAAd,GAAA;IAAA;EAAA;AAAA;AAEA,IAAAe,wBAAA,GAAAnB,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAiB,wBAAA,EAAAhB,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAe,wBAAA,CAAAf,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAO,wBAAA,CAAAf,GAAA;IAAA;EAAA;AAAA;AACA,IAAAgB,WAAA,GAAApB,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAkB,WAAA,EAAAjB,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAgB,WAAA,CAAAhB,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAQ,WAAA,CAAAhB,GAAA;IAAA;EAAA;AAAA;AACA,IAAAiB,MAAA,GAAArB,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAmB,MAAA,EAAAlB,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAiB,MAAA,CAAAjB,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAS,MAAA,CAAAjB,GAAA;IAAA;EAAA;AAAA;AACA,IAAAkB,aAAA,GAAAtB,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAoB,aAAA,EAAAnB,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAkB,aAAA,CAAAlB,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAU,aAAA,CAAAlB,GAAA;IAAA;EAAA;AAAA;AAEA,IAAAmB,GAAA,GAAAC,sBAAA,CAAAxB,OAAA;AACA,IAAAyB,GAAA,GAAAD,sBAAA,CAAAxB,OAAA;AACA,IAAA0B,GAAA,GAAAF,sBAAA,CAAAxB,OAAA;AACA,IAAA2B,GAAA,GAAAH,sBAAA,CAAAxB,OAAA;AACA,IAAA4B,GAAA,GAAAJ,sBAAA,CAAAxB,OAAA;AACA,IAAA6B,GAAA,GAAAL,sBAAA,CAAAxB,OAAA;AACA,IAAA8B,GAAA,GAAAN,sBAAA,CAAAxB,OAAA;AACA,IAAA+B,GAAA,GAAAP,sBAAA,CAAAxB,OAAA;AAEA,IAAAgC,kBAAA,GAAAhC,OAAA;AACA,IAAAiC,QAAA,GAAAjC,OAAA;AAEA,IAAAkC,gBAAA,GAAAC,uBAAA,CAAAnC,OAAA;AAAiDS,OAAA,CAAAyB,gBAAA,GAAAA,gBAAA;AAAA,SAAAE,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,yBAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAF,wBAAAM,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,aAAAE,OAAA,CAAAF,GAAA,yBAAAA,GAAA,uCAAAA,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAhC,GAAA,CAAA6B,GAAA,SAAAK,MAAA,WAAAC,qBAAA,GAAA9C,MAAA,CAAAS,cAAA,IAAAT,MAAA,CAAA+C,wBAAA,WAAA5C,GAAA,IAAAqC,GAAA,QAAArC,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAkC,GAAA,EAAArC,GAAA,SAAA6C,IAAA,GAAAF,qBAAA,GAAA9C,MAAA,CAAA+C,wBAAA,CAAAP,GAAA,EAAArC,GAAA,cAAA6C,IAAA,KAAAA,IAAA,CAAArC,GAAA,IAAAqC,IAAA,CAAAC,GAAA,KAAAjD,MAAA,CAAAS,cAAA,CAAAoC,MAAA,EAAA1C,GAAA,EAAA6C,IAAA,YAAAH,MAAA,CAAA1C,GAAA,IAAAqC,GAAA,CAAArC,GAAA,SAAA0C,MAAA,cAAAL,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAM,GAAA,CAAAT,GAAA,EAAAK,MAAA,YAAAA,MAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
exports.StreamChatRN = void 0;
|
|
6
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
7
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
8
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
9
|
+
var DEFAULT_GLOBAL_STREAM_CONFIG = {
|
|
10
|
+
resizableCDNHosts: ['.stream-io-cdn.com']
|
|
11
|
+
};
|
|
12
|
+
var StreamChatRN = function () {
|
|
13
|
+
function StreamChatRN() {
|
|
14
|
+
(0, _classCallCheck2["default"])(this, StreamChatRN);
|
|
15
|
+
}
|
|
16
|
+
(0, _createClass2["default"])(StreamChatRN, null, [{
|
|
17
|
+
key: "setConfig",
|
|
18
|
+
value: function setConfig(config) {
|
|
19
|
+
this.config = (0, _extends2["default"])({}, this.config, config);
|
|
20
|
+
}
|
|
21
|
+
}]);
|
|
22
|
+
return StreamChatRN;
|
|
23
|
+
}();
|
|
24
|
+
exports.StreamChatRN = StreamChatRN;
|
|
25
|
+
StreamChatRN.config = DEFAULT_GLOBAL_STREAM_CONFIG;
|
|
26
|
+
//# sourceMappingURL=StreamChatRN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["DEFAULT_GLOBAL_STREAM_CONFIG","resizableCDNHosts","StreamChatRN","_classCallCheck2","_createClass2","key","value","setConfig","config","_extends2","exports"],"sources":["StreamChatRN.ts"],"sourcesContent":["type StreamConfig = {\n resizableCDNHosts: string[];\n};\nconst DEFAULT_GLOBAL_STREAM_CONFIG = {\n resizableCDNHosts: ['.stream-io-cdn.com'],\n};\n\n/**\n * StreamChatRN - Global config for the RN Chat SDK\n * This config is used to enable/disable features and options for the SDK.\n */\nexport class StreamChatRN {\n /**\n * Global config for StreamChatRN.\n */\n static config: StreamConfig = DEFAULT_GLOBAL_STREAM_CONFIG;\n /**\n * Set global config for StreamChatRN allows you to set wished CDN hosts for resizing images.\n * This function accepts an config object that will be merged with the default config.\n * @example StreamChatRN.setConfig({ resizableCDNHosts: ['my-custom-cdn.com', 'my-other-cdn.com'] });\n */\n static setConfig(config: Partial<StreamConfig>) {\n this.config = { ...this.config, ...config };\n }\n}\n"],"mappings":";;;;;;;;AAGA,IAAMA,4BAA4B,GAAG;EACnCC,iBAAiB,EAAE,CAAC,oBAAoB;AAC1C,CAAC;AAAC,IAMWC,YAAY;EAAA,SAAAA,aAAA;IAAA,IAAAC,gBAAA,mBAAAD,YAAA;EAAA;EAAA,IAAAE,aAAA,aAAAF,YAAA;IAAAG,GAAA;IAAAC,KAAA,EAUvB,SAAAC,UAAiBC,MAA6B,EAAE;MAC9C,IAAI,CAACA,MAAM,OAAAC,SAAA,iBAAQ,IAAI,CAACD,MAAM,EAAKA,MAAM,CAAE;IAC7C;EAAC;EAAA,OAAAN,YAAA;AAAA;AAAAQ,OAAA,CAAAR,YAAA,GAAAA,YAAA;AAZUA,YAAY,CAIhBM,MAAM,GAAiBR,4BAA4B"}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
3
3
|
});
|
|
4
4
|
exports.getResizedImageUrl = getResizedImageUrl;
|
|
5
5
|
var _reactNative = require("react-native");
|
|
6
|
+
var _StreamChatRN = require("./StreamChatRN");
|
|
6
7
|
function getResizedImageUrl(_ref) {
|
|
7
8
|
var height = _ref.height,
|
|
8
9
|
_ref$resize = _ref.resize,
|
|
@@ -13,7 +14,9 @@ function getResizedImageUrl(_ref) {
|
|
|
13
14
|
var parsedUrl = new URL(url);
|
|
14
15
|
var originalHeight = parsedUrl.searchParams.get('oh');
|
|
15
16
|
var originalWidth = parsedUrl.searchParams.get('ow');
|
|
16
|
-
var isResizableUrl =
|
|
17
|
+
var isResizableUrl = _StreamChatRN.StreamChatRN.config.resizableCDNHosts.some(function (rCDNh) {
|
|
18
|
+
return url.includes(rCDNh);
|
|
19
|
+
}) && originalHeight && originalWidth;
|
|
17
20
|
if (!isResizableUrl || !height && !width) return url;
|
|
18
21
|
if (height) {
|
|
19
22
|
parsedUrl.searchParams.set('h', "" + _reactNative.PixelRatio.getPixelSizeForLayoutSize(Number(height)));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","getResizedImageUrl","_ref","height","_ref$resize","resize","url","width","parsedUrl","URL","originalHeight","searchParams","get","originalWidth","isResizableUrl","includes","set","PixelRatio","getPixelSizeForLayoutSize","Number","toString","error","console","warn"],"sources":["getResizedImageUrl.ts"],"sourcesContent":["import { PixelRatio } from 'react-native';\n\
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_StreamChatRN","getResizedImageUrl","_ref","height","_ref$resize","resize","url","width","parsedUrl","URL","originalHeight","searchParams","get","originalWidth","isResizableUrl","StreamChatRN","config","resizableCDNHosts","some","rCDNh","includes","set","PixelRatio","getPixelSizeForLayoutSize","Number","toString","error","console","warn"],"sources":["getResizedImageUrl.ts"],"sourcesContent":["import { PixelRatio } from 'react-native';\n\nimport { StreamChatRN } from './StreamChatRN';\n\nexport type GetResizedImageUrlParams = {\n url: string;\n height?: string | number;\n resize?: 'clip' | 'crop' | 'fill' | 'scale';\n width?: string | number;\n};\n\n/**\n * Any file or image upload done through stream's chat SDK or components get uploaded\n * to CloudFront CDN. Following function returns a url of resized image (to given width and height).\n * It can be used to avoid rendering heavy images on UI, for the sake of performance.\n *\n * This function accepts an object with following properties:\n * - height: height of the resized image.\n * - url: url of the image.\n * - width: width of the resized image.\n *\n * @returns {string} Url of the image with given height and width.\n */\nexport function getResizedImageUrl({\n height,\n resize = 'clip',\n url,\n width,\n}: GetResizedImageUrlParams) {\n try {\n const parsedUrl = new URL(url);\n\n const originalHeight = parsedUrl.searchParams.get('oh');\n const originalWidth = parsedUrl.searchParams.get('ow');\n\n // If url is not within Stream's cloudfront CDN or any other configured resizableCDNHosts (which offers fast image resizing), then return the url as it is.\n // Check for oh and ow parameters in the url, is just to differentiate between old and new CDN.\n // In case of old CDN we don't want to do any kind of resizing.\n\n const isResizableUrl =\n StreamChatRN.config.resizableCDNHosts.some((rCDNh) => url.includes(rCDNh)) &&\n originalHeight &&\n originalWidth;\n\n if (!isResizableUrl || (!height && !width)) return url;\n\n if (height) {\n parsedUrl.searchParams.set('h', `${PixelRatio.getPixelSizeForLayoutSize(Number(height))}`);\n }\n\n if (width) {\n parsedUrl.searchParams.set('w', `${PixelRatio.getPixelSizeForLayoutSize(Number(width))}`);\n }\n\n parsedUrl.searchParams.set('resize', `${resize}`);\n\n return parsedUrl.toString();\n } catch (error) {\n // There is some issue with the url.\n // Simply return the original url, there is no need to break the app for this.\n console.warn(error);\n\n return url;\n }\n}\n"],"mappings":";;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,IAAAC,aAAA,GAAAD,OAAA;AAqBO,SAASE,kBAAkBA,CAAAC,IAAA,EAKL;EAAA,IAJ3BC,MAAM,GAAAD,IAAA,CAANC,MAAM;IAAAC,WAAA,GAAAF,IAAA,CACNG,MAAM;IAANA,MAAM,GAAAD,WAAA,cAAG,MAAM,GAAAA,WAAA;IACfE,GAAG,GAAAJ,IAAA,CAAHI,GAAG;IACHC,KAAK,GAAAL,IAAA,CAALK,KAAK;EAEL,IAAI;IACF,IAAMC,SAAS,GAAG,IAAIC,GAAG,CAACH,GAAG,CAAC;IAE9B,IAAMI,cAAc,GAAGF,SAAS,CAACG,YAAY,CAACC,GAAG,CAAC,IAAI,CAAC;IACvD,IAAMC,aAAa,GAAGL,SAAS,CAACG,YAAY,CAACC,GAAG,CAAC,IAAI,CAAC;IAMtD,IAAME,cAAc,GAClBC,0BAAY,CAACC,MAAM,CAACC,iBAAiB,CAACC,IAAI,CAAC,UAACC,KAAK;MAAA,OAAKb,GAAG,CAACc,QAAQ,CAACD,KAAK,CAAC;IAAA,EAAC,IAC1ET,cAAc,IACdG,aAAa;IAEf,IAAI,CAACC,cAAc,IAAK,CAACX,MAAM,IAAI,CAACI,KAAM,EAAE,OAAOD,GAAG;IAEtD,IAAIH,MAAM,EAAE;MACVK,SAAS,CAACG,YAAY,CAACU,GAAG,CAAC,GAAG,OAAKC,uBAAU,CAACC,yBAAyB,CAACC,MAAM,CAACrB,MAAM,CAAC,CAAC,CAAG;IAC5F;IAEA,IAAII,KAAK,EAAE;MACTC,SAAS,CAACG,YAAY,CAACU,GAAG,CAAC,GAAG,OAAKC,uBAAU,CAACC,yBAAyB,CAACC,MAAM,CAACjB,KAAK,CAAC,CAAC,CAAG;IAC3F;IAEAC,SAAS,CAACG,YAAY,CAACU,GAAG,CAAC,QAAQ,OAAKhB,MAAM,CAAG;IAEjD,OAAOG,SAAS,CAACiB,QAAQ,EAAE;EAC7B,CAAC,CAAC,OAAOC,KAAK,EAAE;IAGdC,OAAO,CAACC,IAAI,CAACF,KAAK,CAAC;IAEnB,OAAOpB,GAAG;EACZ;AACF"}
|
package/lib/module/version.json
CHANGED
|
@@ -8,6 +8,7 @@ export * from './types/types';
|
|
|
8
8
|
export * from './utils/patchMessageTextCommand';
|
|
9
9
|
export * from './utils/Streami18n';
|
|
10
10
|
export * from './utils/utils';
|
|
11
|
+
export * from './utils/StreamChatRN';
|
|
11
12
|
export { default as enTranslations } from './i18n/en.json';
|
|
12
13
|
export { default as frTranslations } from './i18n/fr.json';
|
|
13
14
|
export { default as hiTranslations } from './i18n/hi.json';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
declare type StreamConfig = {
|
|
2
|
+
resizableCDNHosts: string[];
|
|
3
|
+
};
|
|
4
|
+
/**
|
|
5
|
+
* StreamChatRN - Global config for the RN Chat SDK
|
|
6
|
+
* This config is used to enable/disable features and options for the SDK.
|
|
7
|
+
*/
|
|
8
|
+
export declare class StreamChatRN {
|
|
9
|
+
/**
|
|
10
|
+
* Global config for StreamChatRN.
|
|
11
|
+
*/
|
|
12
|
+
static config: StreamConfig;
|
|
13
|
+
/**
|
|
14
|
+
* Set global config for StreamChatRN allows you to set wished CDN hosts for resizing images.
|
|
15
|
+
* This function accepts an config object that will be merged with the default config.
|
|
16
|
+
* @example StreamChatRN.setConfig({ resizableCDNHosts: ['my-custom-cdn.com', 'my-other-cdn.com'] });
|
|
17
|
+
*/
|
|
18
|
+
static setConfig(config: Partial<StreamConfig>): void;
|
|
19
|
+
}
|
|
20
|
+
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
declare type GetResizedImageUrlParams = {
|
|
1
|
+
export declare type GetResizedImageUrlParams = {
|
|
2
2
|
url: string;
|
|
3
3
|
height?: string | number;
|
|
4
4
|
resize?: 'clip' | 'crop' | 'fill' | 'scale';
|
|
@@ -17,4 +17,3 @@ declare type GetResizedImageUrlParams = {
|
|
|
17
17
|
* @returns {string} Url of the image with given height and width.
|
|
18
18
|
*/
|
|
19
19
|
export declare function getResizedImageUrl({ height, resize, url, width, }: GetResizedImageUrlParams): string;
|
|
20
|
-
export {};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "stream-chat-react-native-core",
|
|
3
3
|
"description": "The official React Native and Expo components for Stream Chat, a service for building chat applications",
|
|
4
|
-
"version": "5.
|
|
4
|
+
"version": "5.14.0-beta.1",
|
|
5
5
|
"author": {
|
|
6
6
|
"company": "Stream.io Inc",
|
|
7
7
|
"name": "Stream.io Inc"
|
|
@@ -997,6 +997,8 @@ const ChannelWithContext = <
|
|
|
997
997
|
channel.state.clearMessages();
|
|
998
998
|
channel.state.setIsUpToDate(true);
|
|
999
999
|
channel.state.addMessagesSorted(state.messages);
|
|
1000
|
+
channel.state.addPinnedMessages(state.pinned_messages);
|
|
1001
|
+
|
|
1000
1002
|
copyChannelState();
|
|
1001
1003
|
return;
|
|
1002
1004
|
}
|
|
@@ -1045,10 +1047,9 @@ const ChannelWithContext = <
|
|
|
1045
1047
|
|
|
1046
1048
|
setHasNoMoreRecentMessagesToLoad(true);
|
|
1047
1049
|
channel.state.setIsUpToDate(true);
|
|
1048
|
-
|
|
1049
1050
|
channel.state.clearMessages();
|
|
1050
1051
|
channel.state.addMessagesSorted(finalMessages);
|
|
1051
|
-
|
|
1052
|
+
channel.state.addPinnedMessages(state.pinned_messages);
|
|
1052
1053
|
setHasMore(true);
|
|
1053
1054
|
copyChannelState();
|
|
1054
1055
|
|
package/src/index.ts
CHANGED
|
@@ -11,6 +11,7 @@ export * from './types/types';
|
|
|
11
11
|
export * from './utils/patchMessageTextCommand';
|
|
12
12
|
export * from './utils/Streami18n';
|
|
13
13
|
export * from './utils/utils';
|
|
14
|
+
export * from './utils/StreamChatRN';
|
|
14
15
|
|
|
15
16
|
export { default as enTranslations } from './i18n/en.json';
|
|
16
17
|
export { default as frTranslations } from './i18n/fr.json';
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
type StreamConfig = {
|
|
2
|
+
resizableCDNHosts: string[];
|
|
3
|
+
};
|
|
4
|
+
const DEFAULT_GLOBAL_STREAM_CONFIG = {
|
|
5
|
+
resizableCDNHosts: ['.stream-io-cdn.com'],
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* StreamChatRN - Global config for the RN Chat SDK
|
|
10
|
+
* This config is used to enable/disable features and options for the SDK.
|
|
11
|
+
*/
|
|
12
|
+
export class StreamChatRN {
|
|
13
|
+
/**
|
|
14
|
+
* Global config for StreamChatRN.
|
|
15
|
+
*/
|
|
16
|
+
static config: StreamConfig = DEFAULT_GLOBAL_STREAM_CONFIG;
|
|
17
|
+
/**
|
|
18
|
+
* Set global config for StreamChatRN allows you to set wished CDN hosts for resizing images.
|
|
19
|
+
* This function accepts an config object that will be merged with the default config.
|
|
20
|
+
* @example StreamChatRN.setConfig({ resizableCDNHosts: ['my-custom-cdn.com', 'my-other-cdn.com'] });
|
|
21
|
+
*/
|
|
22
|
+
static setConfig(config: Partial<StreamConfig>) {
|
|
23
|
+
this.config = { ...this.config, ...config };
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { PixelRatio } from 'react-native';
|
|
2
|
+
|
|
3
|
+
import { getResizedImageUrl, GetResizedImageUrlParams } from '../getResizedImageUrl';
|
|
4
|
+
import { StreamChatRN } from '../StreamChatRN';
|
|
5
|
+
|
|
6
|
+
const TEST_URL_1 =
|
|
7
|
+
'http://us-east.stream-io-cdn.com/blah?sig=34k23n4k23nk423&oh=300&ow=200&h=*&w=*&resize=*';
|
|
8
|
+
const TEST_URL_2 = 'http://us-east.stream-io-cdn.com/blah?oh=300&ow=200&h=*&w=*&resize=*';
|
|
9
|
+
const TEST_CASES: GetResizedImageUrlParams[] = [
|
|
10
|
+
{ height: 100, resize: 'scale', url: TEST_URL_1, width: 100 },
|
|
11
|
+
{ height: 200, resize: 'fill', url: TEST_URL_1, width: 300 },
|
|
12
|
+
{ height: 1000, resize: 'clip', url: TEST_URL_1, width: 10 },
|
|
13
|
+
{ height: 100, resize: 'scale', url: TEST_URL_2, width: 100 },
|
|
14
|
+
{ height: 200, resize: 'fill', url: TEST_URL_2, width: 300 },
|
|
15
|
+
{ height: 1000, resize: 'clip', url: TEST_URL_2, width: 10 },
|
|
16
|
+
];
|
|
17
|
+
describe('getResizedImageUrl (happy flow)', () => {
|
|
18
|
+
it.each(TEST_CASES)(
|
|
19
|
+
'should append given height, width and resize mode to all url sorts',
|
|
20
|
+
({ height, resize, url, width }) => {
|
|
21
|
+
const resizedUrl = getResizedImageUrl({ height, resize, url, width });
|
|
22
|
+
const parsedUrl = new URL(resizedUrl);
|
|
23
|
+
expect(parsedUrl.searchParams.get('h')).toEqual(
|
|
24
|
+
`${PixelRatio.getPixelSizeForLayoutSize(height as number)}`,
|
|
25
|
+
);
|
|
26
|
+
expect(parsedUrl.searchParams.get('w')).toEqual(
|
|
27
|
+
`${PixelRatio.getPixelSizeForLayoutSize(width as number)}`,
|
|
28
|
+
);
|
|
29
|
+
expect(parsedUrl.searchParams.get('resize')).toEqual(resize);
|
|
30
|
+
},
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
it('should append all related params with resizableCDNHosts was set', () => {
|
|
34
|
+
StreamChatRN.setConfig({ resizableCDNHosts: ['my-company-cdn.com'] });
|
|
35
|
+
const resizedUrl = getResizedImageUrl({
|
|
36
|
+
height: 100,
|
|
37
|
+
url: 'http://my-company-cdn.com/cat-photo?sig=34k23n4k23nk423&oh=300&ow=200',
|
|
38
|
+
width: 100,
|
|
39
|
+
});
|
|
40
|
+
expect(resizedUrl).toEqual(
|
|
41
|
+
'http://my-company-cdn.com/cat-photo?sig=34k23n4k23nk423&oh=300&ow=200&h=200&w=200&resize=clip',
|
|
42
|
+
);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
describe('getResizedImageUrl (sad flow)', () => {
|
|
47
|
+
afterEach(jest.restoreAllMocks);
|
|
48
|
+
|
|
49
|
+
it.each([
|
|
50
|
+
{ height: 100, url: 'http://foo.com/blah_(wikipedia)#cite-1', width: 100 },
|
|
51
|
+
{ url: 'http://us-east.stream-io-cdn.com/blah?oh=300' },
|
|
52
|
+
{ url: 'http://us-east.stream-io-cdn.com/blah?ow=300' },
|
|
53
|
+
])('should append given height, width and resize mode to url', ({ height, url, width }) => {
|
|
54
|
+
const resizedUrl = getResizedImageUrl({
|
|
55
|
+
height,
|
|
56
|
+
url,
|
|
57
|
+
width,
|
|
58
|
+
});
|
|
59
|
+
expect(resizedUrl).toEqual(url);
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
it('handles an error correctly and log warns it', () => {
|
|
63
|
+
let someError;
|
|
64
|
+
jest.spyOn(console, 'warn');
|
|
65
|
+
jest.spyOn(global, 'URL').mockImplementationOnce(() => ({
|
|
66
|
+
// @ts-ignore
|
|
67
|
+
searchParams: {
|
|
68
|
+
get: () => {
|
|
69
|
+
throw (someError = new Error('some error'));
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
}));
|
|
73
|
+
const resizedUrl = getResizedImageUrl({
|
|
74
|
+
url: TEST_URL_1,
|
|
75
|
+
});
|
|
76
|
+
expect(console.warn).toHaveBeenCalledWith(someError);
|
|
77
|
+
expect(resizedUrl).toEqual(TEST_URL_1);
|
|
78
|
+
});
|
|
79
|
+
});
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { PixelRatio } from 'react-native';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import { StreamChatRN } from './StreamChatRN';
|
|
4
|
+
|
|
5
|
+
export type GetResizedImageUrlParams = {
|
|
4
6
|
url: string;
|
|
5
7
|
height?: string | number;
|
|
6
8
|
resize?: 'clip' | 'crop' | 'fill' | 'scale';
|
|
@@ -31,10 +33,14 @@ export function getResizedImageUrl({
|
|
|
31
33
|
const originalHeight = parsedUrl.searchParams.get('oh');
|
|
32
34
|
const originalWidth = parsedUrl.searchParams.get('ow');
|
|
33
35
|
|
|
34
|
-
// If url is not
|
|
36
|
+
// If url is not within Stream's cloudfront CDN or any other configured resizableCDNHosts (which offers fast image resizing), then return the url as it is.
|
|
35
37
|
// Check for oh and ow parameters in the url, is just to differentiate between old and new CDN.
|
|
36
38
|
// In case of old CDN we don't want to do any kind of resizing.
|
|
37
|
-
|
|
39
|
+
|
|
40
|
+
const isResizableUrl =
|
|
41
|
+
StreamChatRN.config.resizableCDNHosts.some((rCDNh) => url.includes(rCDNh)) &&
|
|
42
|
+
originalHeight &&
|
|
43
|
+
originalWidth;
|
|
38
44
|
|
|
39
45
|
if (!isResizableUrl || (!height && !width)) return url;
|
|
40
46
|
|
package/src/version.json
CHANGED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { PixelRatio } from 'react-native';
|
|
2
|
-
|
|
3
|
-
import { getResizedImageUrl } from '../getResizedImageUrl';
|
|
4
|
-
|
|
5
|
-
describe('getResizedImageUrl', () => {
|
|
6
|
-
it('should return same url if its not cloudfront cdn', () => {
|
|
7
|
-
const testUrl = 'http://foo.com/blah_(wikipedia)#cite-1';
|
|
8
|
-
|
|
9
|
-
const resizedUrl = getResizedImageUrl({ height: 100, url: testUrl, width: 100 });
|
|
10
|
-
expect(resizedUrl).toEqual(testUrl);
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
it('should append given height, width and resize mode to url', () => {
|
|
14
|
-
const testUrl =
|
|
15
|
-
'http://us-east.stream-io-cdn.com/blah?sig=34k23n4k23nk423&oh=300&ow=200&h=*&w=*&resize=*';
|
|
16
|
-
|
|
17
|
-
const testConfigs = [
|
|
18
|
-
{ height: 100, resize: 'scale', width: 100 },
|
|
19
|
-
{ height: 200, resize: 'fill', width: 300 },
|
|
20
|
-
{ height: 1000, resize: 'clip', width: 10 },
|
|
21
|
-
];
|
|
22
|
-
|
|
23
|
-
testConfigs.forEach(({ height, resize, width }) => {
|
|
24
|
-
const resizedUrl = getResizedImageUrl({ height, resize, url: testUrl, width });
|
|
25
|
-
const parsedUrl = new URL(resizedUrl);
|
|
26
|
-
expect(parsedUrl.searchParams.get('h')).toEqual(
|
|
27
|
-
`${PixelRatio.getPixelSizeForLayoutSize(height)}`,
|
|
28
|
-
);
|
|
29
|
-
expect(parsedUrl.searchParams.get('w')).toEqual(
|
|
30
|
-
`${PixelRatio.getPixelSizeForLayoutSize(width)}`,
|
|
31
|
-
);
|
|
32
|
-
expect(parsedUrl.searchParams.get('resize')).toEqual(resize);
|
|
33
|
-
});
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
it('should replace wildcards with given height, width and resize mode within url', () => {
|
|
37
|
-
const testUrl = 'http://us-east.stream-io-cdn.com/blah?oh=300&ow=200&h=*&w=*&resize=*';
|
|
38
|
-
|
|
39
|
-
const testConfigs = [
|
|
40
|
-
{ height: 100, resize: 'scale', width: 100 },
|
|
41
|
-
{ height: 200, resize: 'fill', width: 300 },
|
|
42
|
-
{ height: 1000, resize: 'clip', width: 10 },
|
|
43
|
-
];
|
|
44
|
-
|
|
45
|
-
testConfigs.forEach(({ height, resize, width }) => {
|
|
46
|
-
const resizedUrl = getResizedImageUrl({ height, resize, url: testUrl, width });
|
|
47
|
-
const parsedUrl = new URL(resizedUrl);
|
|
48
|
-
expect(parsedUrl.searchParams.get('h')).toEqual(
|
|
49
|
-
`${PixelRatio.getPixelSizeForLayoutSize(height)}`,
|
|
50
|
-
);
|
|
51
|
-
expect(parsedUrl.searchParams.get('w')).toEqual(
|
|
52
|
-
`${PixelRatio.getPixelSizeForLayoutSize(width)}`,
|
|
53
|
-
);
|
|
54
|
-
expect(parsedUrl.searchParams.get('resize')).toEqual(resize);
|
|
55
|
-
});
|
|
56
|
-
});
|
|
57
|
-
});
|