@momo-kits/foundation 0.81.43-tracking.9 → 0.81.48
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/Application/BottomTab.tsx +0 -1
- package/Application/Components.tsx +12 -18
- package/Application/ModalScreen.tsx +4 -16
- package/Application/NavigationContainer.tsx +9 -28
- package/Application/Navigator.ts +12 -0
- package/Application/StackScreen.tsx +2 -13
- package/Application/types.ts +11 -5
- package/Application/utils.tsx +2 -3
- package/Assets/icon.json +83 -5
- package/Assets/icon_bank.json +506 -0
- package/Button/index.tsx +14 -35
- package/CheckBox/index.tsx +0 -1
- package/Icon/index.tsx +7 -2
- package/Icon/types.ts +1 -1
- package/IconButton/index.tsx +7 -28
- package/Input/Input.tsx +29 -27
- package/Input/InputDropDown.tsx +1 -6
- package/Input/InputMoney.tsx +4 -25
- package/Input/InputOTP.tsx +7 -27
- package/Input/InputSearch.tsx +26 -49
- package/Input/InputTextArea.tsx +1 -5
- package/Input/index.tsx +1 -12
- package/Input/styles.ts +1 -3
- package/Layout/Card.tsx +0 -1
- package/Layout/Item.tsx +0 -1
- package/Layout/Screen.tsx +1 -3
- package/Layout/Section.tsx +0 -1
- package/Pagination/PaginationScroll.tsx +0 -1
- package/Popup/PopupNotify.tsx +0 -1
- package/Popup/PopupPromotion.tsx +1 -1
- package/Radio/index.tsx +0 -1
- package/Skeleton/index.tsx +1 -1
- package/Switch/index.tsx +0 -1
- package/Tag/index.tsx +1 -3
- package/Text/index.tsx +0 -1
- package/package.json +2 -2
- package/publish.sh +1 -1
- package/verify.js +0 -36
|
@@ -35,7 +35,6 @@ const NavigationButton: React.FC<NavigationButtonProps> = ({
|
|
|
35
35
|
tintColor,
|
|
36
36
|
onPress,
|
|
37
37
|
useBorder = true,
|
|
38
|
-
accessibilityLabel,
|
|
39
38
|
badgeType,
|
|
40
39
|
badgeValue,
|
|
41
40
|
}) => {
|
|
@@ -67,7 +66,6 @@ const NavigationButton: React.FC<NavigationButtonProps> = ({
|
|
|
67
66
|
return (
|
|
68
67
|
<View style={{width: scaleSize(28)}}>
|
|
69
68
|
<TouchableOpacity
|
|
70
|
-
accessibilityLabel={`NavigationButton/${accessibilityLabel}`}
|
|
71
69
|
style={[styles.navigationButton, buttonStyle]}
|
|
72
70
|
onPress={onPress}>
|
|
73
71
|
<Icon
|
|
@@ -81,7 +79,7 @@ const NavigationButton: React.FC<NavigationButtonProps> = ({
|
|
|
81
79
|
);
|
|
82
80
|
};
|
|
83
81
|
|
|
84
|
-
const HeaderTitle: React.FC<any> =
|
|
82
|
+
const HeaderTitle: React.FC<any> = props => {
|
|
85
83
|
const {theme} = useContext(ApplicationContext);
|
|
86
84
|
const opacity = props.animatedValue?.interpolate({
|
|
87
85
|
inputRange: [0, 200],
|
|
@@ -92,7 +90,6 @@ const HeaderTitle: React.FC<any> = ({accessibilityLabel = '', ...props}) => {
|
|
|
92
90
|
return (
|
|
93
91
|
<Animated.Text
|
|
94
92
|
{...props}
|
|
95
|
-
accessibilityLabel={`HeaderTitle/${accessibilityLabel}${props.children}`}
|
|
96
93
|
style={[
|
|
97
94
|
styles.title,
|
|
98
95
|
{fontFamily: `${theme.font}-Bold`, opacity, color: props.tintColor},
|
|
@@ -106,7 +103,6 @@ const HeaderLeft: React.FC<HeaderBackProps> = ({
|
|
|
106
103
|
preventBack,
|
|
107
104
|
onPressLeftHeader,
|
|
108
105
|
useBorder,
|
|
109
|
-
accessibilityLabel = '',
|
|
110
106
|
}) => {
|
|
111
107
|
const context = useContext(MiniAppContext);
|
|
112
108
|
const {navigator} = useContext(ApplicationContext);
|
|
@@ -171,7 +167,6 @@ const HeaderLeft: React.FC<HeaderBackProps> = ({
|
|
|
171
167
|
icon="ic_back"
|
|
172
168
|
tintColor={tintColor}
|
|
173
169
|
onPress={goBackSafe}
|
|
174
|
-
accessibilityLabel={`${accessibilityLabel}Back`}
|
|
175
170
|
useBorder={useBorder}
|
|
176
171
|
/>
|
|
177
172
|
</View>
|
|
@@ -288,9 +283,11 @@ const HeaderRightAction: React.FC<any> = ({children, ...restProps}) => {
|
|
|
288
283
|
const HeaderToolkitAction: React.FC<any> = ({
|
|
289
284
|
tintColor,
|
|
290
285
|
pinnedTool,
|
|
286
|
+
runtimeTools = [],
|
|
291
287
|
preventBack,
|
|
292
288
|
}) => {
|
|
293
289
|
const {theme, navigator} = useContext(ApplicationContext);
|
|
290
|
+
const miniContext = useContext(MiniAppContext);
|
|
294
291
|
const [toolConfig, setToolConfig] = useState<any>();
|
|
295
292
|
const {onAction} = toolConfig ?? {};
|
|
296
293
|
|
|
@@ -300,10 +297,12 @@ const HeaderToolkitAction: React.FC<any> = ({
|
|
|
300
297
|
}
|
|
301
298
|
|
|
302
299
|
useEffect(() => {
|
|
303
|
-
if (
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
300
|
+
if (miniContext?.toolkitConfig?.hidden === false) {
|
|
301
|
+
if (navigator?.toolkitConfig) {
|
|
302
|
+
setToolConfig(navigator?.toolkitConfig);
|
|
303
|
+
} else {
|
|
304
|
+
getToolkitConfig();
|
|
305
|
+
}
|
|
307
306
|
}
|
|
308
307
|
}, []);
|
|
309
308
|
|
|
@@ -322,7 +321,7 @@ const HeaderToolkitAction: React.FC<any> = ({
|
|
|
322
321
|
onAction?.('onMore');
|
|
323
322
|
navigator?.maxApi?.dispatchFunction?.(
|
|
324
323
|
'showTools',
|
|
325
|
-
|
|
324
|
+
{runtimeTools},
|
|
326
325
|
(res: {item: {action?: string; key: string}}) => {
|
|
327
326
|
const {item} = res;
|
|
328
327
|
navigator?.toolkitCallback?.(item);
|
|
@@ -364,7 +363,6 @@ const HeaderToolkitAction: React.FC<any> = ({
|
|
|
364
363
|
if (pinTool)
|
|
365
364
|
return (
|
|
366
365
|
<NavigationButton
|
|
367
|
-
accessibilityLabel={'UtilityTool'}
|
|
368
366
|
icon={pinTool.icon as string}
|
|
369
367
|
tintColor={tintColor}
|
|
370
368
|
badgeValue={badgeValue}
|
|
@@ -395,15 +393,11 @@ const HeaderToolkitAction: React.FC<any> = ({
|
|
|
395
393
|
borderWidth: backgroundColor ? 0.5 : 0,
|
|
396
394
|
},
|
|
397
395
|
]}>
|
|
398
|
-
<TouchableOpacity
|
|
399
|
-
accessibilityLabel={'Toolkit/More'}
|
|
400
|
-
onPress={onMore}>
|
|
396
|
+
<TouchableOpacity onPress={onMore}>
|
|
401
397
|
<Icon color={tintColor} source="navigation_more_horiz" size={20} />
|
|
402
398
|
</TouchableOpacity>
|
|
403
399
|
<View style={[styles.divider, {backgroundColor: tintColor}]} />
|
|
404
|
-
<TouchableOpacity
|
|
405
|
-
accessibilityLabel={`Toolkit/Close`}
|
|
406
|
-
onPress={onClose}>
|
|
400
|
+
<TouchableOpacity onPress={onClose}>
|
|
407
401
|
<Icon
|
|
408
402
|
color={tintColor}
|
|
409
403
|
source="16_navigation_close_circle"
|
|
@@ -74,7 +74,7 @@ const Modal: React.FC<ModalParams> = props => {
|
|
|
74
74
|
style={styles.modalSpaceVertical}
|
|
75
75
|
onPress={() => onDismiss()}
|
|
76
76
|
/>
|
|
77
|
-
<View style={styles.modalContent}
|
|
77
|
+
<View style={styles.modalContent}>
|
|
78
78
|
<Component {...params} />
|
|
79
79
|
</View>
|
|
80
80
|
<Pressable
|
|
@@ -167,7 +167,7 @@ const BottomSheet: React.FC<BottomSheetParams> = props => {
|
|
|
167
167
|
bottomInset={Platform.OS === 'ios' ? bottomInset : 0}
|
|
168
168
|
handleComponent={null}
|
|
169
169
|
backdropComponent={backdropComponent}>
|
|
170
|
-
<BottomSheetView
|
|
170
|
+
<BottomSheetView>
|
|
171
171
|
<View style={[styles.sheetContainer, {backgroundColor}]}>
|
|
172
172
|
<View style={styles.indicatorContainer}>
|
|
173
173
|
<View
|
|
@@ -189,22 +189,11 @@ const BottomSheet: React.FC<BottomSheetParams> = props => {
|
|
|
189
189
|
...{
|
|
190
190
|
headerLeft: (props: any) => {
|
|
191
191
|
if (props.canGoBack) {
|
|
192
|
-
return
|
|
193
|
-
<HeaderLeft
|
|
194
|
-
{...props}
|
|
195
|
-
useBorder={false}
|
|
196
|
-
accessibilityLabel={'BottomSheet/'}
|
|
197
|
-
/>
|
|
198
|
-
);
|
|
192
|
+
return <HeaderLeft {...props} useBorder={false} />;
|
|
199
193
|
}
|
|
200
194
|
},
|
|
201
195
|
headerTitle: (props: any) => {
|
|
202
|
-
return
|
|
203
|
-
<HeaderTitle
|
|
204
|
-
{...props}
|
|
205
|
-
accessibilityLabel={'BottomSheet/'}
|
|
206
|
-
/>
|
|
207
|
-
);
|
|
196
|
+
return <HeaderTitle {...props} />;
|
|
208
197
|
},
|
|
209
198
|
headerTintColor: theme.colors.text.default,
|
|
210
199
|
headerBackground: () => (
|
|
@@ -220,7 +209,6 @@ const BottomSheet: React.FC<BottomSheetParams> = props => {
|
|
|
220
209
|
icon="24_navigation_close"
|
|
221
210
|
useBorder={false}
|
|
222
211
|
onPress={() => bottomSheetRef.current?.dismiss()}
|
|
223
|
-
accessibilityLabel={'BottomSheet/Close'}
|
|
224
212
|
/>
|
|
225
213
|
</HeaderRightAction>
|
|
226
214
|
),
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, {useEffect, useRef, useState} from 'react';
|
|
1
|
+
import React, {useContext, useEffect, useRef, useState} from 'react';
|
|
2
2
|
import {BottomSheetModalProvider} from '@gorhom/bottom-sheet';
|
|
3
3
|
import {SafeAreaProvider} from 'react-native-safe-area-context';
|
|
4
4
|
import {
|
|
@@ -6,13 +6,13 @@ import {
|
|
|
6
6
|
NavigationContainerRef,
|
|
7
7
|
} from '@react-navigation/native';
|
|
8
8
|
import {createStackNavigator} from '@react-navigation/stack';
|
|
9
|
-
import {DeviceEventEmitter
|
|
9
|
+
import {DeviceEventEmitter} from 'react-native';
|
|
10
10
|
import StackScreen from './StackScreen';
|
|
11
11
|
import ModalScreen from './ModalScreen';
|
|
12
12
|
import Navigator from './Navigator';
|
|
13
13
|
import {getDialogOptions, getModalOptions, getStackOptions} from './utils';
|
|
14
14
|
import {LocalizationObject, NavigationContainerProps} from './types';
|
|
15
|
-
import {ApplicationContext} from './index';
|
|
15
|
+
import {ApplicationContext, MiniAppContext} from './index';
|
|
16
16
|
import kitLocalization from '../Assets/language.json';
|
|
17
17
|
|
|
18
18
|
const Stack = createStackNavigator();
|
|
@@ -24,41 +24,25 @@ const NavigationContainer: React.FC<NavigationContainerProps> = ({
|
|
|
24
24
|
maxApi,
|
|
25
25
|
localization,
|
|
26
26
|
}) => {
|
|
27
|
+
const context = useContext(MiniAppContext);
|
|
27
28
|
const navigationRef = React.useRef<NavigationContainerRef>(null);
|
|
28
29
|
const navigator = useRef(new Navigator(navigationRef));
|
|
29
30
|
const [showGrid, setShowGrid] = useState(false);
|
|
30
|
-
const
|
|
31
|
-
const [config, setConfig] = useState<any>(undefined);
|
|
32
|
-
let assets = theme.assets;
|
|
33
|
-
if (config && theme.assets?.headerBackground) {
|
|
34
|
-
assets = {...assets, headerBackground: config.navigationBar?.headerBar};
|
|
35
|
-
}
|
|
31
|
+
const config = useRef<any>();
|
|
36
32
|
|
|
37
33
|
/**
|
|
38
34
|
* handle mini language & listen change
|
|
39
35
|
* engine only shake to enable grid view
|
|
40
36
|
*/
|
|
41
37
|
useEffect(() => {
|
|
42
|
-
maxApi?.getLanguage?.((lang: 'vi' | 'en') => {
|
|
43
|
-
setLanguage(lang);
|
|
44
|
-
});
|
|
45
|
-
const listener = maxApi?.observer?.('language', (lang: 'vi' | 'en') => {
|
|
46
|
-
setLanguage(lang);
|
|
47
|
-
});
|
|
48
38
|
const subscription = DeviceEventEmitter.addListener(
|
|
49
39
|
'onChangeGrid',
|
|
50
40
|
enable => {
|
|
51
41
|
setShowGrid(!!enable);
|
|
52
42
|
},
|
|
53
43
|
);
|
|
54
|
-
|
|
55
|
-
const result = JSON.parse(
|
|
56
|
-
NativeModules?.ConfigsModule?.getConfigSync?.('DESIGN_SYSTEM'),
|
|
57
|
-
);
|
|
58
|
-
setConfig(result);
|
|
59
|
-
} catch (e) {}
|
|
44
|
+
|
|
60
45
|
return () => {
|
|
61
|
-
listener?.remove?.();
|
|
62
46
|
subscription?.remove?.();
|
|
63
47
|
};
|
|
64
48
|
}, []);
|
|
@@ -73,6 +57,7 @@ const NavigationContainer: React.FC<NavigationContainerProps> = ({
|
|
|
73
57
|
* @param key
|
|
74
58
|
*/
|
|
75
59
|
const translate = (key: string) => {
|
|
60
|
+
const language: 'vi' | 'en' = context?.language ?? 'vi';
|
|
76
61
|
const mergedLocalization: LocalizationObject = {
|
|
77
62
|
vi: {...localization?.vi, ...kitLocalization.vi},
|
|
78
63
|
en: {...localization?.en, ...kitLocalization.en},
|
|
@@ -85,14 +70,10 @@ const NavigationContainer: React.FC<NavigationContainerProps> = ({
|
|
|
85
70
|
<BottomSheetModalProvider>
|
|
86
71
|
<ApplicationContext.Provider
|
|
87
72
|
value={{
|
|
88
|
-
theme: {
|
|
89
|
-
...theme,
|
|
90
|
-
assets: assets,
|
|
91
|
-
},
|
|
92
73
|
navigator: navigator.current,
|
|
74
|
+
config: config.current,
|
|
75
|
+
theme,
|
|
93
76
|
showGrid,
|
|
94
|
-
language,
|
|
95
|
-
config,
|
|
96
77
|
translate,
|
|
97
78
|
}}>
|
|
98
79
|
<ReactNavigationContainer
|
package/Application/Navigator.ts
CHANGED
|
@@ -109,6 +109,18 @@ class Navigator {
|
|
|
109
109
|
);
|
|
110
110
|
};
|
|
111
111
|
|
|
112
|
+
/**
|
|
113
|
+
* dismiss a feature data
|
|
114
|
+
* @param data
|
|
115
|
+
*/
|
|
116
|
+
setDismissData = (data: any) => {
|
|
117
|
+
this.dismissData = data;
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* set callback function for toolkit
|
|
122
|
+
* @param callback
|
|
123
|
+
*/
|
|
112
124
|
setToolkitCallback = (
|
|
113
125
|
callback: (item: {key: string; action: string}) => void,
|
|
114
126
|
) => {
|
|
@@ -5,10 +5,6 @@ import {ApplicationContext, MiniAppContext} from './index';
|
|
|
5
5
|
import {GridSystem} from '../Layout';
|
|
6
6
|
import {useHeaderHeight} from '@react-navigation/stack';
|
|
7
7
|
|
|
8
|
-
const {
|
|
9
|
-
ScreenContext,
|
|
10
|
-
} = require('react-native/Libraries/Components/ScreenContext');
|
|
11
|
-
|
|
12
8
|
const StackScreen: React.FC<ScreenParams> = props => {
|
|
13
9
|
const {theme, showGrid, navigator} = useContext(ApplicationContext);
|
|
14
10
|
const context = useContext(MiniAppContext);
|
|
@@ -65,17 +61,10 @@ const StackScreen: React.FC<ScreenParams> = props => {
|
|
|
65
61
|
}, []);
|
|
66
62
|
|
|
67
63
|
return (
|
|
68
|
-
|
|
69
|
-
value={{
|
|
70
|
-
...context,
|
|
71
|
-
screenName: Component.name,
|
|
72
|
-
autoTracking: (data: any) => {
|
|
73
|
-
navigator?.maxApi?.dispatchFunction?.('autoTracking', data);
|
|
74
|
-
},
|
|
75
|
-
}}>
|
|
64
|
+
<>
|
|
76
65
|
<Component heightHeader={heightHeader} {...params} />
|
|
77
66
|
{showGrid && <GridSystem />}
|
|
78
|
-
|
|
67
|
+
</>
|
|
79
68
|
);
|
|
80
69
|
};
|
|
81
70
|
|
package/Application/types.ts
CHANGED
|
@@ -67,7 +67,6 @@ export type Context = {
|
|
|
67
67
|
theme: Theme;
|
|
68
68
|
navigator?: Navigator;
|
|
69
69
|
showGrid?: boolean;
|
|
70
|
-
language?: 'vi' | 'en';
|
|
71
70
|
translate?: (key: string) => string;
|
|
72
71
|
};
|
|
73
72
|
|
|
@@ -77,7 +76,7 @@ export type MiniAppInfo = {
|
|
|
77
76
|
appId: string;
|
|
78
77
|
buildNumber: number;
|
|
79
78
|
flowPartnerId?: string;
|
|
80
|
-
toolkitConfig?:
|
|
79
|
+
toolkitConfig?: any;
|
|
81
80
|
fromCode?: string;
|
|
82
81
|
};
|
|
83
82
|
|
|
@@ -128,7 +127,6 @@ export type NavigationButtonProps = {
|
|
|
128
127
|
tintColor?: string;
|
|
129
128
|
useBorder?: boolean;
|
|
130
129
|
onPress: () => void;
|
|
131
|
-
accessibilityLabel?: string;
|
|
132
130
|
badgeType?: 'dot' | 'number';
|
|
133
131
|
badgeValue?: number;
|
|
134
132
|
};
|
|
@@ -139,19 +137,27 @@ export type PinnedToolType = {
|
|
|
139
137
|
badgeType?: 'number' | 'dot';
|
|
140
138
|
};
|
|
141
139
|
|
|
140
|
+
export type RuntimeToolType = {
|
|
141
|
+
title: {vi: string; en: string};
|
|
142
|
+
icon: string;
|
|
143
|
+
key: string;
|
|
144
|
+
};
|
|
145
|
+
|
|
142
146
|
export interface NavigationOptions extends StackNavigationOptions {
|
|
143
147
|
preventBack?: PopupNotifyProps;
|
|
144
148
|
onPressLeftHeader?: () => void;
|
|
145
149
|
surface?: boolean;
|
|
146
150
|
hiddenBack?: boolean;
|
|
147
151
|
customTitle?: TitleCustomProps;
|
|
148
|
-
|
|
152
|
+
toolkitParams?: {
|
|
153
|
+
pinnedTool?: PinnedToolType;
|
|
154
|
+
runtimeTools?: RuntimeToolType[];
|
|
155
|
+
};
|
|
149
156
|
}
|
|
150
157
|
|
|
151
158
|
export interface HeaderBackProps extends NavigationButtonProps {
|
|
152
159
|
preventBack?: PopupNotifyProps;
|
|
153
160
|
onPressLeftHeader?: () => void;
|
|
154
|
-
accessibilityLabel?: string;
|
|
155
161
|
}
|
|
156
162
|
|
|
157
163
|
export type HeaderBackgroundProps = {
|
package/Application/utils.tsx
CHANGED
|
@@ -126,20 +126,19 @@ const getOptions = (params: NavigationOptions, theme: Theme) => {
|
|
|
126
126
|
};
|
|
127
127
|
}
|
|
128
128
|
|
|
129
|
-
if (params.pinnedTool) {
|
|
130
129
|
options = {
|
|
131
130
|
...options,
|
|
132
131
|
headerRight: (props: any) => {
|
|
133
132
|
return (
|
|
134
133
|
<HeaderToolkitAction
|
|
135
134
|
preventBack={params.preventBack}
|
|
136
|
-
pinnedTool={params.pinnedTool}
|
|
135
|
+
pinnedTool={params.toolkitParams?.pinnedTool}
|
|
136
|
+
runtimeTools={params.toolkitParams?.runtimeTools}
|
|
137
137
|
{...props}
|
|
138
138
|
/>
|
|
139
139
|
);
|
|
140
140
|
},
|
|
141
141
|
};
|
|
142
|
-
}
|
|
143
142
|
|
|
144
143
|
return {
|
|
145
144
|
...params,
|
package/Assets/icon.json
CHANGED
|
@@ -801,7 +801,7 @@
|
|
|
801
801
|
"uri": "https://img.mservice.com.vn/app/img/kits/navigation_minus_circle_full.png"
|
|
802
802
|
},
|
|
803
803
|
"navigation_more_horiz": {
|
|
804
|
-
"uri": "
|
|
804
|
+
"uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAgKADAAQAAAABAAAAgAAAAABIjgR3AAAFAklEQVR4Ae2aS4tcRRiGM2rEO14SY7wFURGc+CPEyyYJLnSlaCCKLgSzUNBNRAMSF0LIRhGDBMQQMAQ3Zin+A/VHKOIlTm4aJ5fx+VBCT5Puru9UleOE54OX7nO66n2rnj7dp+ucXrPGkoAEJCABCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJCABCUhAAhLoTmCue8JYwNLS0m3s2ooeQXeiJfQj+h59NTc39zuP3Yr89ZhH/mYU+RdQ5H+HIn+Bx25F/u2YR/48ivzzKPK/RUfJP87j5VdM/EH0BTqHJtVZXjiI7mtNAM+H0BF0Hk2qyP8MbeqQ/zC+X6Jp+Yu8fgDd2zp/Rf2Y0E4UcEvrLxq+3GrQeL2OMvlnaL+jYf6b+E078Hl5Wf3J1gut8lfUh4nsWza13Mae2sET92Euclnr3Q3yP1nmmNvYVZu/ov2Z62u5+V6y9UtDJ4FbfPJra3tF/lu14fR/dmj+ivZj4A+gOKfVVnwd3pOdDH3inJ/52p80ztO8sHFA/jz9pp3vJ+WN7z/Jjvjh2KWu6OL6j+l7PKxt4H8NHu8O8InTx1UD+o13uY4d74zvLNh+nzYt+N6Az9sFeYOadFkGcsTewmh+Ri3egJjYGbSOJdLp2JhV5MdS7yfU4g2IuMiN/BjHzCI/vjF+QK34nsBrPfmLM8OTDVoBGo/dwo5Wb354x7fAk/GksGKd3XJu1+P3eGF2NNuGWr354XcTejSetK6WkEbHFhdZWlfGM9O2dJwZz0zbHvmlnk0/JaOhcYWrdWU8M21Lx5nxzLTtkV/q2e0AiMurrSvjmWlbOs6MZ6Ztj/xSz24HQFzbbl0Zz0zb0nFmPDNte+SXenY7AOLGSuvKeGbalo4z45lp2yO/1LPpL9WLoSyDbmTjV3T1xZ11T7LLsJuJ+wW1WomklmHMfx3ZsQy9ErWoY5hsYBl4roXZqEeXVQADPUnI56NBlc8PlK7BI4e2Czwcqswc7f4pnoujO6Y9p20c/IentUm+th/P5m9+cgy55nwK7kZ/oNo6gUH6Uih9NqG4q1dbCxjEfxhSRZ/7UYtL4b/hE99oq68Y+POopi7Q+ZmhM6fvjppw+kb+UxX5r1Tmx72EuKi2eosJ7BoIIeC/UTtzPHZX5O9skL9nYH68+a/W5v8v+jOR59CpBIjjtH261eDx2o7irl5pxdf+4E/++LjxehFlTofHaL913GdVbzOhO9BHKG5vTqo438cfSOJmTtPCcyP6GE07EOPA24vS5/xZg8XzLrQfTTsQ48D7AN06y6/V6y1vWBSNicnFjZ3H0KX+FPp15td2UeBYo3/z48bOZhSXbOOqXVy4ibX7N/9B/rXkPIHmUeSP/ik08s+yz5KABCQgAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIQAISuJwI/A2lzL3lHltsxwAAAABJRU5ErkJggg=="
|
|
805
805
|
},
|
|
806
806
|
"navigation_more_vert": {
|
|
807
807
|
"uri": "https://img.mservice.com.vn/app/img/kits/navigation_more_vert.png"
|
|
@@ -822,7 +822,7 @@
|
|
|
822
822
|
"uri": "https://img.mservice.com.vn/app/img/kits/navigation_scan.png"
|
|
823
823
|
},
|
|
824
824
|
"navigation_search": {
|
|
825
|
-
"uri": "
|
|
825
|
+
"uri": "data:image/webp;base64,UklGRqwEAABXRUJQVlA4TKAEAAAvf8AfEDVIchtJkqT6/6fZ21hkukWeZouKkARJtmlbtm3btm3b741sjWzbtm3btm184xkLgiS5cZsGUuXbsJOAoPSD88dlwMVKiDwdxtRJ4UUP+XlwcpVn1A0I4dWOVnEMET7n62avxi24FD4tSyT9AJCpq/YI7oQjYZj3Bp2zU3A/dBDfF0y+bsBMGCK3KTpOwFyoR70h9Nreo+EvXyi7Ye4vmA7TaLcCQy4ohB90NoLaKqiEL1HbwOH84sdyqk+aQC5smHLkKViZWT8vXlACZQ/EfAcXOJa5bPO4uGm51A91wtzix3+w5I88UhfXAw5GL6Rh6Bvcu77smyD4N4okpNkXWIVGSPVXWz7DqyjYN+vEa3yZctrvunwjw9gGSmW3/EXx6ZILFiTM/BYx2FjwRqzabUHmhe1UtXBWS4RTBMW1xt/MLYm5eiGKXqSGnsX3ZwPNaMUsvYMYtGoL/eIymuGauS66JIzSmOMkP4NE9z9GeAdfELGdrxqK0cgj0sqM6Sa/a6NuxI5BCrENnHO763RvvF7jUlV4B8hOY7PHVvq/EQNSCJpHAyS1AQaWs8QZxHGq40oLu9a32IIU5Mc3dx7z76wGipNE0TT28W8WfnHd4hSrhz5MTSKvuW7C9q931W1Cqjo3KK/1Xpxx0ThVVBKTtWVLZhdU/9P8A3OUvIRheXDUmz4AwVFp0fKJsExgwmKUm8BJe26nmggb7XqpWr1t6BK1k7Al0togegyMTiKcCKjv2xwFliaRT7jUWQ3slyZeNnUmAjeTGCdM6wylAzGTqCcc68wGLieRSnjW2QrsjY6sieA6V4Hl0Q1noqx+xM5Xp4NC9hqYbcPXOgJiJ/CzjVmrg2pN5eIsk5YwGiUu4VZmI0E3imGipQtpeqS7Mwqhz7RnhlvFBQTahwu2nArmUGUm4TVMUmKkCRtIMA4jDVIQKpKX2Bov2XGiuQeVl+ahH2HxCD/eGhmpdp/ox2GOV4234PWe6CtUrTMmu9LIaxIkDAqIR75jqOAH4qMhdie299sGnAIaPkDeczWQe8fQNv/F4fAbJLZLZz/U5xQ9DaGDWLMvMq1zLv7mZDl8xMkgiGTU+gbfzDvX0csGFiceYNdAMQ1yyD1zz3AAMsrFdQOtHyCHUcRTb+Q3yBR2z/X7Wp3uxDvS7vj6AAtEu4OTKLAIr2Jg3W/2JsEyXGPrphKwCmds770kKhnewXuzhKITLMMJJ9iXYZX3vdBvlzANg3X4p5wK1CsjLpcfQ96OCV0juBL+6xVIFd2vawEMvEyl2fg+47xrQpIDroZHR1ZNGDJry5VPMBCusXZfjI83cDf2T2JOCxQSdb1VItAwzelXs8e2Vx5ajif5kvHVGvZLGMI9jrH9PWfsmAepWH9mLrH4mrJ2zYNAkLO7fOpjCHHRirfLA5G8In9usCX8x/Zm8zwHOnnhJr1d4E47rx9b24ncI2ARZClMrVFL9t344dKeZb1yBDL6ua+byl1jLl39vktXq8Ty/ET6+NRwHp84H59sXghPT24vhKcnqRfCw9MetPPs9EHyhfDUQKrhx2WS58GBkw030p/3/nUYBw=="
|
|
826
826
|
},
|
|
827
827
|
"navigation_search_add": {
|
|
828
828
|
"uri": "https://img.mservice.com.vn/app/img/kits/navigation_search_add.png"
|
|
@@ -2640,7 +2640,7 @@
|
|
|
2640
2640
|
"uri": "https://img.mservice.io/momo_app_v2/new_version/img/appx_icon/16_navigation_close_circle_full.png"
|
|
2641
2641
|
},
|
|
2642
2642
|
"16_navigation_close_circle": {
|
|
2643
|
-
"uri": "
|
|
2643
|
+
"uri": "data:image/webp;base64,UklGRkICAABXRUJQVlA4TDUCAAAvP8APEM8x//M//wzbRlKcvMws3D1DYBwIAASMF4YAQCHQAAED7AAg8AMYB0DhQCMgGAnwAARuAAHcAABsSCQMYAgFAFIhSQDYtJHKzMzMzB3//2mWbdmahaMVR/QfgiS5cZsB4DskKoXzC7H/FklUBov99fENkd/zoJJwTKqzegmDvEIn5Y706CFQEo3Y0dm9m0AL9yIHNC/CSkLTlvhY5+N50q2XslGo+8lZ5w3HrchshMJhWGStRMGrHm0yFuSOArKtYpyqbhWnjgFvdw84tbF+RSfo1x2rGeX1LBlDS5gpLyPcafAvfvoxK4kC/IM4BnjRsxGzFB/gPZh4g6+tjdnDl+b4S1wAfXYgEQzghIkePM1NYsHDeqZUvYFbk24I4NJbWs9ISFqqG+X5NG/Ch3lZE3/AyZG+zjxAtGvs4/27pid6e//R6A6UkZSOjpBUVebCSzWZ93NNCgE3g441SFVWmQqoJvNB4xhI4pXu5JdkqKHwVtRgnNcQQClNmP4P2kJRU9XghLaMAE8qKgNQpphRijTms2SgspRMGKlI44lkqbKXdBmpSOOuJKhcJXVGKtI4SK4qD0mJEWphHEDkqnwlWcYo3jgrCfTQv6H/Cf1B5HG7+D15UyHLW3zdyDurG+R1i75u0tdtRN9o2/SNAqZv0Pct8r5J37fJ5wbyuYV+biKf22znxpb93Eg+t5LPzeRzO/XeQL63UO9NLve2tXlvW4eU672xOliqe+NywInY/4owAA=="
|
|
2644
2644
|
},
|
|
2645
2645
|
"16_navigation_close": {
|
|
2646
2646
|
"uri": "https://img.mservice.io/momo_app_v2/new_version/img/appx_icon/16_navigation_close.png"
|
|
@@ -3918,7 +3918,7 @@
|
|
|
3918
3918
|
"uri": "https://img.mservice.com.vn/app/img/kits/Phonebook-outline.png"
|
|
3919
3919
|
},
|
|
3920
3920
|
"ic_back": {
|
|
3921
|
-
"uri": "
|
|
3921
|
+
"uri": "data:image/webp;base64,UklGRqIBAABXRUJQVlA4TJYBAAAvX8AXEFVActtIkjT//zRn9WzKYwOJRgQkAADLRtvOtm3btm3b9r1svWzbtm3btu27OHIkN26abK9JbpFIPuE+bAQmFS5c6qcQhrE34CPEZKHr9/kJf0SiUPENfAnNTcj4eH7FaRKiXoGBmyJ4PQILPUGwuwUmtHpgdLFV0RO1461eyDmQ2tsahZYTgY2tGZg54VjcWoabE4aprU1EOaEa3tpHnhOS7q1TNDkhaN66wpQTnKqtOxw5QRVsPeHvLRfSt16J9ZS49UGup/Ctb+o9BW790u/JbeufZU82/jecggWWvy3fnrT8bAX1pORrK7YnKe9byT1RetrKAe2hcqsM7PZwMVEP/h5A/Eb52039I3LfPlL/IUkvkHvA/7q+Lgm+t76u8ikm2/q+cC/37/e1/L5cTGHf1xUH1EX5ui4IqMLv69ID6up4X+AS01se0Ncc0Jcd0Ffm++JgIvxBX9+fS/TnKsHE8O1cqD/XKia+b+Zy/bniAXPRZlAd5ZjmA+bS1WDq51MVI+R2A4tKRx51UL6PD3EB"
|
|
3922
3922
|
},
|
|
3923
3923
|
"share": {
|
|
3924
3924
|
"uri": "https://img.mservice.com.vn/app/img/mini-app-center/share.png"
|
|
@@ -3936,7 +3936,7 @@
|
|
|
3936
3936
|
"uri": "https://img.mservice.com.vn/app/img/kits/error_mess_icon.png"
|
|
3937
3937
|
},
|
|
3938
3938
|
"media_fail": {
|
|
3939
|
-
"uri": "
|
|
3939
|
+
"uri": "data:image/png;base64,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"
|
|
3940
3940
|
},
|
|
3941
3941
|
"ic_checked": {
|
|
3942
3942
|
"uri": "https://img.mservice.com.vn/app/img/kits/checked_ic.png"
|
|
@@ -3949,5 +3949,83 @@
|
|
|
3949
3949
|
},
|
|
3950
3950
|
"ic_money_bag": {
|
|
3951
3951
|
"uri": "https://static.momocdn.net/app/img/kits/ic_money_bag.png"
|
|
3952
|
+
},
|
|
3953
|
+
"basic_flaged": {
|
|
3954
|
+
"uri": "https://static.momocdn.net/app/img/kits/basic_flaged.png"
|
|
3955
|
+
},
|
|
3956
|
+
"basic_user": {
|
|
3957
|
+
"uri": "https://static.momocdn.net/app/img/kits/basic_user.png"
|
|
3958
|
+
},
|
|
3959
|
+
"media_player_play_not": {
|
|
3960
|
+
"uri": "https://static.momocdn.net/app/img/kits/media_player_play_not.png"
|
|
3961
|
+
},
|
|
3962
|
+
"navigation_AR": {
|
|
3963
|
+
"uri": "https://static.momocdn.net/app/img/kits/navigation_AR.png"
|
|
3964
|
+
},
|
|
3965
|
+
"navigation_scan_barcode": {
|
|
3966
|
+
"uri": "https://static.momocdn.net/app/img/kits/navigation_scan_barcode.png"
|
|
3967
|
+
},
|
|
3968
|
+
"notifications_follow": {
|
|
3969
|
+
"uri": "https://static.momocdn.net/app/img/kits/notifications_follow.png"
|
|
3970
|
+
},
|
|
3971
|
+
"notifications_followed": {
|
|
3972
|
+
"uri": "https://static.momocdn.net/app/img/kits/notifications_followed.png"
|
|
3973
|
+
},
|
|
3974
|
+
"notifications_unfollow": {
|
|
3975
|
+
"uri": "https://static.momocdn.net/app/img/kits/notifications_unfollow.png"
|
|
3976
|
+
},
|
|
3977
|
+
"reaction_disliked": {
|
|
3978
|
+
"uri": "https://static.momocdn.net/app/img/kits/reaction_disliked.png"
|
|
3979
|
+
},
|
|
3980
|
+
"reaction_liked": {
|
|
3981
|
+
"uri": "https://static.momocdn.net/app/img/kits/reaction_liked.png"
|
|
3982
|
+
},
|
|
3983
|
+
"travel_247": {
|
|
3984
|
+
"uri": "https://static.momocdn.net/app/img/kits/travel_247.png"
|
|
3985
|
+
},
|
|
3986
|
+
"travel_children_area": {
|
|
3987
|
+
"uri": "https://static.momocdn.net/app/img/kits/travel_children_area.png"
|
|
3988
|
+
},
|
|
3989
|
+
"travel_cooker": {
|
|
3990
|
+
"uri": "https://static.momocdn.net/app/img/kits/travel_cooker.png"
|
|
3991
|
+
},
|
|
3992
|
+
"travel_dishwasher": {
|
|
3993
|
+
"uri": "https://static.momocdn.net/app/img/kits/travel_dishwasher.png"
|
|
3994
|
+
},
|
|
3995
|
+
"travel_electronic_stove": {
|
|
3996
|
+
"uri": "https://static.momocdn.net/app/img/kits/travel_electronic_stove.png"
|
|
3997
|
+
},
|
|
3998
|
+
"travel_friend_group": {
|
|
3999
|
+
"uri": "https://static.momocdn.net/app/img/kits/travel_friend_group.png"
|
|
4000
|
+
},
|
|
4001
|
+
"travel_gas_stove": {
|
|
4002
|
+
"uri": "https://static.momocdn.net/app/img/kits/travel_gas_stove.png"
|
|
4003
|
+
},
|
|
4004
|
+
"travel_kid_area": {
|
|
4005
|
+
"uri": "https://static.momocdn.net/app/img/kits/travel_kid_area.png"
|
|
4006
|
+
},
|
|
4007
|
+
"travel_led_Light": {
|
|
4008
|
+
"uri": "https://static.momocdn.net/app/img/kits/travel_led_Light.png"
|
|
4009
|
+
},
|
|
4010
|
+
"travel_light": {
|
|
4011
|
+
"uri": "https://static.momocdn.net/app/img/kits/travel_light.png"
|
|
4012
|
+
},
|
|
4013
|
+
"travel_music": {
|
|
4014
|
+
"uri": "https://static.momocdn.net/app/img/kits/travel_music.png"
|
|
4015
|
+
},
|
|
4016
|
+
"travel_outdoor_table": {
|
|
4017
|
+
"uri": "https://static.momocdn.net/app/img/kits/travel_outdoor_table.png"
|
|
4018
|
+
},
|
|
4019
|
+
"travel_private_room": {
|
|
4020
|
+
"uri": "https://static.momocdn.net/app/img/kits/travel_private_room.png"
|
|
4021
|
+
},
|
|
4022
|
+
"travel_romantic": {
|
|
4023
|
+
"uri": "https://static.momocdn.net/app/img/kits/travel_romantic.png"
|
|
4024
|
+
},
|
|
4025
|
+
"travel_smoking": {
|
|
4026
|
+
"uri": "https://static.momocdn.net/app/img/kits/travel_smoking.png"
|
|
4027
|
+
},
|
|
4028
|
+
"travel_suitcase": {
|
|
4029
|
+
"uri": "https://static.momocdn.net/app/img/kits/travel_suitcase.png"
|
|
3952
4030
|
}
|
|
3953
4031
|
}
|