Merge branch 'develop' into feat.new-audio-player
This commit is contained in:
commit
023cd8fd06
|
@ -320,6 +320,7 @@ commands:
|
|||
at: ios
|
||||
- restore_cache: *restore-gems-cache
|
||||
- restore_cache: *restore-npm-cache-mac
|
||||
- run: *install-npm-modules
|
||||
- run: *update-fastlane-ios
|
||||
- manage-pods
|
||||
- run:
|
||||
|
|
|
@ -12,7 +12,7 @@ exports[`Storyshots Avatar Avatar Url 1`] = `"{\\"type\\":\\"View\\",\\"props\\"
|
|||
|
||||
exports[`Storyshots Avatar Channel 1`] = `"{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"width\\":56,\\"height\\":56,\\"borderRadius\\":4},null],\\"testID\\":\\"avatar\\"},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"overflow\\":\\"hidden\\"},{\\"width\\":56,\\"height\\":56,\\"borderRadius\\":4}]},\\"children\\":[{\\"type\\":\\"FastImageView\\",\\"props\\":{\\"style\\":{\\"position\\":\\"absolute\\",\\"left\\":0,\\"right\\":0,\\"top\\":0,\\"bottom\\":0},\\"source\\":{\\"uri\\":\\"https://open.rocket.chat/avatar/@general?format=png&size=112\\",\\"headers\\":{\\"User-Agent\\":\\"RC Mobile; ios unknown; vunknown (unknown)\\"},\\"priority\\":\\"high\\"},\\"resizeMode\\":\\"cover\\"},\\"children\\":null}]}]}"`;
|
||||
|
||||
exports[`Storyshots Avatar Children 1`] = `"{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"width\\":56,\\"height\\":56,\\"borderRadius\\":4},null],\\"testID\\":\\"avatar\\"},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"overflow\\":\\"hidden\\"},{\\"width\\":56,\\"height\\":56,\\"borderRadius\\":4}]},\\"children\\":[{\\"type\\":\\"FastImageView\\",\\"props\\":{\\"style\\":{\\"position\\":\\"absolute\\",\\"left\\":0,\\"right\\":0,\\"top\\":0,\\"bottom\\":0},\\"source\\":{\\"uri\\":\\"https://open.rocket.chat/avatar/Avatar?format=png&size=112\\",\\"headers\\":{\\"User-Agent\\":\\"RC Mobile; ios unknown; vunknown (unknown)\\"},\\"priority\\":\\"high\\"},\\"resizeMode\\":\\"cover\\"},\\"children\\":null}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":24,\\"color\\":\\"#f5455c\\"},[{\\"width\\":24,\\"height\\":24,\\"textAlignVertical\\":\\"center\\"},[{\\"position\\":\\"absolute\\",\\"bottom\\":-2,\\"right\\":-2,\\"borderRadius\\":10}]],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}"`;
|
||||
exports[`Storyshots Avatar Children 1`] = `"{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"width\\":56,\\"height\\":56,\\"borderRadius\\":4},null],\\"testID\\":\\"avatar\\"},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"overflow\\":\\"hidden\\"},{\\"width\\":56,\\"height\\":56,\\"borderRadius\\":4}]},\\"children\\":[{\\"type\\":\\"FastImageView\\",\\"props\\":{\\"style\\":{\\"position\\":\\"absolute\\",\\"left\\":0,\\"right\\":0,\\"top\\":0,\\"bottom\\":0},\\"source\\":{\\"uri\\":\\"https://open.rocket.chat/avatar/Avatar?format=png&size=112\\",\\"headers\\":{\\"User-Agent\\":\\"RC Mobile; ios unknown; vunknown (unknown)\\"},\\"priority\\":\\"high\\"},\\"resizeMode\\":\\"cover\\"},\\"children\\":null}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":24,\\"color\\":\\"#f5455c\\"},[{\\"lineHeight\\":24},[{\\"width\\":24,\\"height\\":24,\\"textAlignVertical\\":\\"center\\"},[{\\"position\\":\\"absolute\\",\\"bottom\\":-2,\\"right\\":-2,\\"borderRadius\\":10}]]],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}"`;
|
||||
|
||||
exports[`Storyshots Avatar Custom Border Radius 1`] = `"{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"width\\":56,\\"height\\":56,\\"borderRadius\\":28},null],\\"testID\\":\\"avatar\\"},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"overflow\\":\\"hidden\\"},{\\"width\\":56,\\"height\\":56,\\"borderRadius\\":28}]},\\"children\\":[{\\"type\\":\\"FastImageView\\",\\"props\\":{\\"style\\":{\\"position\\":\\"absolute\\",\\"left\\":0,\\"right\\":0,\\"top\\":0,\\"bottom\\":0},\\"source\\":{\\"uri\\":\\"https://open.rocket.chat/avatar/Avatar?format=png&size=112\\",\\"headers\\":{\\"User-Agent\\":\\"RC Mobile; ios unknown; vunknown (unknown)\\"},\\"priority\\":\\"high\\"},\\"resizeMode\\":\\"cover\\"},\\"children\\":null}]}]}"`;
|
||||
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`Storyshots Chip Chip Text 1`] = `"{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"alignItems\\":\\"flex-start\\",\\"padding\\":16}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"accessible\\":true,\\"accessibilityState\\":{\\"disabled\\":false},\\"focusable\\":true,\\"style\\":[{\\"paddingHorizontal\\":8,\\"marginRight\\":8,\\"borderRadius\\":4,\\"justifyContent\\":\\"center\\",\\"maxWidth\\":192},{\\"backgroundColor\\":\\"#efeff4\\"},null],\\"collapsable\\":false},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"width\\":28,\\"height\\":28,\\"borderRadius\\":4},{\\"marginRight\\":8,\\"marginVertical\\":8}],\\"testID\\":\\"avatar\\"},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"overflow\\":\\"hidden\\"},{\\"width\\":28,\\"height\\":28,\\"borderRadius\\":4}]},\\"children\\":[{\\"type\\":\\"FastImageView\\",\\"props\\":{\\"style\\":{\\"position\\":\\"absolute\\",\\"left\\":0,\\"right\\":0,\\"top\\":0,\\"bottom\\":0},\\"source\\":{\\"uri\\":\\"https://open.rocket.chat/avatar/rocket.cat?format=png&size=56\\",\\"headers\\":{\\"User-Agent\\":\\"RC Mobile; ios unknown; vunknown (unknown)\\"},\\"priority\\":\\"high\\"},\\"resizeMode\\":\\"cover\\"},\\"children\\":null}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"marginRight\\":8,\\"maxWidth\\":120}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"Inter\\",\\"fontWeight\\":\\"500\\"},{\\"color\\":\\"#2f343d\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Rocket.Cat\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":16,\\"color\\":\\"#6C727A\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]}"`;
|
||||
exports[`Storyshots Chip Chip Text 1`] = `"{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"alignItems\\":\\"flex-start\\",\\"padding\\":16}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"accessible\\":true,\\"accessibilityState\\":{\\"disabled\\":false},\\"focusable\\":true,\\"style\\":[{\\"paddingHorizontal\\":8,\\"marginRight\\":8,\\"borderRadius\\":4,\\"justifyContent\\":\\"center\\",\\"maxWidth\\":192},{\\"backgroundColor\\":\\"#efeff4\\"},null],\\"collapsable\\":false},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"width\\":28,\\"height\\":28,\\"borderRadius\\":4},{\\"marginRight\\":8,\\"marginVertical\\":8}],\\"testID\\":\\"avatar\\"},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"overflow\\":\\"hidden\\"},{\\"width\\":28,\\"height\\":28,\\"borderRadius\\":4}]},\\"children\\":[{\\"type\\":\\"FastImageView\\",\\"props\\":{\\"style\\":{\\"position\\":\\"absolute\\",\\"left\\":0,\\"right\\":0,\\"top\\":0,\\"bottom\\":0},\\"source\\":{\\"uri\\":\\"https://open.rocket.chat/avatar/rocket.cat?format=png&size=56\\",\\"headers\\":{\\"User-Agent\\":\\"RC Mobile; ios unknown; vunknown (unknown)\\"},\\"priority\\":\\"high\\"},\\"resizeMode\\":\\"cover\\"},\\"children\\":null}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"marginRight\\":8,\\"maxWidth\\":120}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"Inter\\",\\"fontWeight\\":\\"500\\"},{\\"color\\":\\"#2f343d\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Rocket.Cat\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":16,\\"color\\":\\"#6C727A\\"},[{\\"lineHeight\\":16},null],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]}"`;
|
||||
|
||||
exports[`Storyshots Chip Chip With Short Text 1`] = `"{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"alignItems\\":\\"flex-start\\",\\"padding\\":16}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"accessible\\":true,\\"accessibilityState\\":{\\"disabled\\":false},\\"focusable\\":true,\\"style\\":[{\\"paddingHorizontal\\":8,\\"marginRight\\":8,\\"borderRadius\\":4,\\"justifyContent\\":\\"center\\",\\"maxWidth\\":192},{\\"backgroundColor\\":\\"#efeff4\\"},null],\\"collapsable\\":false},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"width\\":28,\\"height\\":28,\\"borderRadius\\":4},{\\"marginRight\\":8,\\"marginVertical\\":8}],\\"testID\\":\\"avatar\\"},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"overflow\\":\\"hidden\\"},{\\"width\\":28,\\"height\\":28,\\"borderRadius\\":4}]},\\"children\\":[{\\"type\\":\\"FastImageView\\",\\"props\\":{\\"style\\":{\\"position\\":\\"absolute\\",\\"left\\":0,\\"right\\":0,\\"top\\":0,\\"bottom\\":0},\\"source\\":{\\"uri\\":\\"https://open.rocket.chat/avatar/rocket.cat?format=png&size=56\\",\\"headers\\":{\\"User-Agent\\":\\"RC Mobile; ios unknown; vunknown (unknown)\\"},\\"priority\\":\\"high\\"},\\"resizeMode\\":\\"cover\\"},\\"children\\":null}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"marginRight\\":8,\\"maxWidth\\":120}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"Inter\\",\\"fontWeight\\":\\"500\\"},{\\"color\\":\\"#2f343d\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Short\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":16,\\"color\\":\\"#6C727A\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]}"`;
|
||||
exports[`Storyshots Chip Chip With Short Text 1`] = `"{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"alignItems\\":\\"flex-start\\",\\"padding\\":16}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"accessible\\":true,\\"accessibilityState\\":{\\"disabled\\":false},\\"focusable\\":true,\\"style\\":[{\\"paddingHorizontal\\":8,\\"marginRight\\":8,\\"borderRadius\\":4,\\"justifyContent\\":\\"center\\",\\"maxWidth\\":192},{\\"backgroundColor\\":\\"#efeff4\\"},null],\\"collapsable\\":false},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"width\\":28,\\"height\\":28,\\"borderRadius\\":4},{\\"marginRight\\":8,\\"marginVertical\\":8}],\\"testID\\":\\"avatar\\"},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"overflow\\":\\"hidden\\"},{\\"width\\":28,\\"height\\":28,\\"borderRadius\\":4}]},\\"children\\":[{\\"type\\":\\"FastImageView\\",\\"props\\":{\\"style\\":{\\"position\\":\\"absolute\\",\\"left\\":0,\\"right\\":0,\\"top\\":0,\\"bottom\\":0},\\"source\\":{\\"uri\\":\\"https://open.rocket.chat/avatar/rocket.cat?format=png&size=56\\",\\"headers\\":{\\"User-Agent\\":\\"RC Mobile; ios unknown; vunknown (unknown)\\"},\\"priority\\":\\"high\\"},\\"resizeMode\\":\\"cover\\"},\\"children\\":null}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"marginRight\\":8,\\"maxWidth\\":120}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"Inter\\",\\"fontWeight\\":\\"500\\"},{\\"color\\":\\"#2f343d\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Short\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":16,\\"color\\":\\"#6C727A\\"},[{\\"lineHeight\\":16},null],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]}"`;
|
||||
|
||||
exports[`Storyshots Chip Chip Without Avatar 1`] = `"{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"alignItems\\":\\"flex-start\\",\\"padding\\":16}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"accessible\\":true,\\"accessibilityState\\":{\\"disabled\\":false},\\"focusable\\":true,\\"style\\":[{\\"paddingHorizontal\\":8,\\"marginRight\\":8,\\"borderRadius\\":4,\\"justifyContent\\":\\"center\\",\\"maxWidth\\":192},{\\"backgroundColor\\":\\"#efeff4\\"},null],\\"collapsable\\":false},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"marginRight\\":8,\\"maxWidth\\":120}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"Inter\\",\\"fontWeight\\":\\"500\\"},{\\"color\\":\\"#2f343d\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Without Avatar\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":16,\\"color\\":\\"#6C727A\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]}"`;
|
||||
exports[`Storyshots Chip Chip Without Avatar 1`] = `"{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"alignItems\\":\\"flex-start\\",\\"padding\\":16}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"accessible\\":true,\\"accessibilityState\\":{\\"disabled\\":false},\\"focusable\\":true,\\"style\\":[{\\"paddingHorizontal\\":8,\\"marginRight\\":8,\\"borderRadius\\":4,\\"justifyContent\\":\\"center\\",\\"maxWidth\\":192},{\\"backgroundColor\\":\\"#efeff4\\"},null],\\"collapsable\\":false},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"marginRight\\":8,\\"maxWidth\\":120}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"Inter\\",\\"fontWeight\\":\\"500\\"},{\\"color\\":\\"#2f343d\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Without Avatar\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":16,\\"color\\":\\"#6C727A\\"},[{\\"lineHeight\\":16},null],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]}"`;
|
||||
|
||||
exports[`Storyshots Chip Chip Without Avatar And Icon 1`] = `"{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"alignItems\\":\\"flex-start\\",\\"padding\\":16}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"accessible\\":true,\\"accessibilityState\\":{\\"disabled\\":true},\\"focusable\\":true,\\"style\\":[{\\"paddingHorizontal\\":8,\\"marginRight\\":8,\\"borderRadius\\":4,\\"justifyContent\\":\\"center\\",\\"maxWidth\\":192},{\\"backgroundColor\\":\\"#efeff4\\"},null],\\"collapsable\\":false},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"marginRight\\":8,\\"maxWidth\\":120}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"Inter\\",\\"fontWeight\\":\\"500\\"},{\\"color\\":\\"#2f343d\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Without Avatar and Icon\\"]}]}]}]}]}"`;
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -2,4 +2,4 @@
|
|||
|
||||
exports[`Storyshots Login Services Separators 1`] = `"[{\\"type\\":\\"View\\",\\"props\\":{\\"accessible\\":true,\\"accessibilityLabel\\":\\"More options\\",\\"accessibilityState\\":{\\"disabled\\":false},\\"focusable\\":true,\\"collapsable\\":false,\\"style\\":{\\"paddingHorizontal\\":14,\\"justifyContent\\":\\"center\\",\\"height\\":48,\\"borderRadius\\":4,\\"marginBottom\\":0,\\"backgroundColor\\":\\"#ffffff\\",\\"opacity\\":1}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"textAlign\\":\\"center\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"Inter\\",\\"fontWeight\\":\\"500\\"},{\\"color\\":\\"#1d74f5\\",\\"fontSize\\":16},null],\\"accessibilityLabel\\":\\"More options\\"},\\"children\\":[\\"More options\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"marginVertical\\":24}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":1,\\"flex\\":1},{\\"backgroundColor\\":\\"#e1e5e8\\"}]},\\"children\\":null},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"marginLeft\\":14,\\"marginRight\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"Inter\\",\\"fontWeight\\":\\"500\\"},{\\"color\\":\\"#9ca2a8\\"}]},\\"children\\":[\\"OR\\"]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":1,\\"flex\\":1},{\\"backgroundColor\\":\\"#e1e5e8\\"}]},\\"children\\":null}]},{\\"type\\":\\"View\\",\\"props\\":{\\"accessible\\":true,\\"accessibilityLabel\\":\\"Less options\\",\\"accessibilityState\\":{\\"disabled\\":false},\\"focusable\\":true,\\"collapsable\\":false,\\"style\\":{\\"paddingHorizontal\\":14,\\"justifyContent\\":\\"center\\",\\"height\\":48,\\"borderRadius\\":4,\\"marginBottom\\":0,\\"backgroundColor\\":\\"#ffffff\\",\\"opacity\\":1}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"textAlign\\":\\"center\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"Inter\\",\\"fontWeight\\":\\"500\\"},{\\"color\\":\\"#1d74f5\\",\\"fontSize\\":16},null],\\"accessibilityLabel\\":\\"Less options\\"},\\"children\\":[\\"Less options\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"marginVertical\\":24}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":1,\\"flex\\":1},{\\"backgroundColor\\":\\"#e1e5e8\\"}]},\\"children\\":null},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"marginLeft\\":14,\\"marginRight\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"Inter\\",\\"fontWeight\\":\\"500\\"},{\\"color\\":\\"#9ca2a8\\"}]},\\"children\\":[\\"OR\\"]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":1,\\"flex\\":1},{\\"backgroundColor\\":\\"#e1e5e8\\"}]},\\"children\\":null}]}]"`;
|
||||
|
||||
exports[`Storyshots Login Services Service List 1`] = `"[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"borderRadius\\":4,\\"width\\":\\"100%\\",\\"height\\":48,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":15}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":24,\\"color\\":\\"#0d0e12\\"},{\\"position\\":\\"absolute\\",\\"left\\":15,\\"top\\":12,\\"width\\":24,\\"height\\":24},{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"Inter\\",\\"fontWeight\\":\\"400\\",\\"fontSize\\":16},{\\"color\\":\\"#0d0e12\\"}]},\\"children\\":[\\"Continue with\\",\\" \\",{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":{\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"Inter\\",\\"fontWeight\\":\\"600\\"}},\\"children\\":[\\"github\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"borderRadius\\":4,\\"width\\":\\"100%\\",\\"height\\":48,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":15}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":24,\\"color\\":\\"#0d0e12\\"},{\\"position\\":\\"absolute\\",\\"left\\":15,\\"top\\":12,\\"width\\":24,\\"height\\":24},{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"Inter\\",\\"fontWeight\\":\\"400\\",\\"fontSize\\":16},{\\"color\\":\\"#0d0e12\\"}]},\\"children\\":[\\"Continue with\\",\\" \\",{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":{\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"Inter\\",\\"fontWeight\\":\\"600\\"}},\\"children\\":[\\"gitlab\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"borderRadius\\":4,\\"width\\":\\"100%\\",\\"height\\":48,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":15}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":24,\\"color\\":\\"#0d0e12\\"},{\\"position\\":\\"absolute\\",\\"left\\":15,\\"top\\":12,\\"width\\":24,\\"height\\":24},{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"Inter\\",\\"fontWeight\\":\\"400\\",\\"fontSize\\":16},{\\"color\\":\\"#0d0e12\\"}]},\\"children\\":[\\"Continue with\\",\\" \\",{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":{\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"Inter\\",\\"fontWeight\\":\\"600\\"}},\\"children\\":[\\"google\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"borderRadius\\":4,\\"width\\":\\"100%\\",\\"height\\":48,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":15}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":24,\\"color\\":\\"#0d0e12\\"},{\\"position\\":\\"absolute\\",\\"left\\":15,\\"top\\":12,\\"width\\":24,\\"height\\":24},{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"Inter\\",\\"fontWeight\\":\\"400\\",\\"fontSize\\":16},{\\"color\\":\\"#0d0e12\\"}]},\\"children\\":[\\"Continue with\\",\\" \\",{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":{\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"Inter\\",\\"fontWeight\\":\\"600\\"}},\\"children\\":[\\"apple\\"]}]}]}]"`;
|
||||
exports[`Storyshots Login Services Service List 1`] = `"[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"borderRadius\\":4,\\"width\\":\\"100%\\",\\"height\\":48,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":15}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":24,\\"color\\":\\"#0d0e12\\"},[{\\"lineHeight\\":24},{\\"position\\":\\"absolute\\",\\"left\\":15,\\"top\\":12,\\"width\\":24,\\"height\\":24}],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"Inter\\",\\"fontWeight\\":\\"400\\",\\"fontSize\\":16},{\\"color\\":\\"#0d0e12\\"}]},\\"children\\":[\\"Continue with\\",\\" \\",{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":{\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"Inter\\",\\"fontWeight\\":\\"600\\"}},\\"children\\":[\\"github\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"borderRadius\\":4,\\"width\\":\\"100%\\",\\"height\\":48,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":15}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":24,\\"color\\":\\"#0d0e12\\"},[{\\"lineHeight\\":24},{\\"position\\":\\"absolute\\",\\"left\\":15,\\"top\\":12,\\"width\\":24,\\"height\\":24}],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"Inter\\",\\"fontWeight\\":\\"400\\",\\"fontSize\\":16},{\\"color\\":\\"#0d0e12\\"}]},\\"children\\":[\\"Continue with\\",\\" \\",{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":{\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"Inter\\",\\"fontWeight\\":\\"600\\"}},\\"children\\":[\\"gitlab\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"borderRadius\\":4,\\"width\\":\\"100%\\",\\"height\\":48,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":15}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":24,\\"color\\":\\"#0d0e12\\"},[{\\"lineHeight\\":24},{\\"position\\":\\"absolute\\",\\"left\\":15,\\"top\\":12,\\"width\\":24,\\"height\\":24}],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"Inter\\",\\"fontWeight\\":\\"400\\",\\"fontSize\\":16},{\\"color\\":\\"#0d0e12\\"}]},\\"children\\":[\\"Continue with\\",\\" \\",{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":{\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"Inter\\",\\"fontWeight\\":\\"600\\"}},\\"children\\":[\\"google\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"borderRadius\\":4,\\"width\\":\\"100%\\",\\"height\\":48,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":15}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":24,\\"color\\":\\"#0d0e12\\"},[{\\"lineHeight\\":24},{\\"position\\":\\"absolute\\",\\"left\\":15,\\"top\\":12,\\"width\\":24,\\"height\\":24}],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"Inter\\",\\"fontWeight\\":\\"400\\",\\"fontSize\\":16},{\\"color\\":\\"#0d0e12\\"}]},\\"children\\":[\\"Continue with\\",\\" \\",{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":{\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"Inter\\",\\"fontWeight\\":\\"600\\"}},\\"children\\":[\\"apple\\"]}]}]}]"`;
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,3 +1,3 @@
|
|||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`Storyshots RoomTypeIcon All 1`] = `"[{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":30,\\"color\\":\\"#cbced1\\"},[{\\"width\\":30,\\"height\\":30,\\"textAlignVertical\\":\\"center\\"},[{\\"marginRight\\":4},null]],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":30,\\"color\\":\\"#2de0a5\\"},[{\\"width\\":30,\\"height\\":30,\\"textAlignVertical\\":\\"center\\"},[{\\"marginRight\\":4},null]],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":30,\\"color\\":\\"#0d0e12\\"},[{\\"marginRight\\":4},null],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":30,\\"color\\":\\"#0d0e12\\"},[{\\"marginRight\\":4},null],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":30,\\"color\\":\\"#0d0e12\\"},[{\\"marginRight\\":4},null],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":30,\\"color\\":\\"#0d0e12\\"},[{\\"marginRight\\":4},null],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":30,\\"color\\":\\"#0d0e12\\"},[{\\"marginRight\\":4},null],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":30,\\"color\\":\\"#0d0e12\\"},[{\\"marginRight\\":4},null],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":30,\\"color\\":\\"#ffd21f\\"},[{\\"marginRight\\":4},null],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":30,\\"color\\":\\"#0d0e12\\"},[{\\"marginRight\\":4},{\\"margin\\":10}],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]"`;
|
||||
exports[`Storyshots RoomTypeIcon All 1`] = `"[{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":30,\\"color\\":\\"#cbced1\\"},[{\\"lineHeight\\":30},[{\\"width\\":30,\\"height\\":30,\\"textAlignVertical\\":\\"center\\"},[{\\"marginRight\\":4},null]]],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":30,\\"color\\":\\"#2de0a5\\"},[{\\"lineHeight\\":30},[{\\"width\\":30,\\"height\\":30,\\"textAlignVertical\\":\\"center\\"},[{\\"marginRight\\":4},null]]],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":30,\\"color\\":\\"#0d0e12\\"},[{\\"lineHeight\\":30},[{\\"marginRight\\":4},null]],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":30,\\"color\\":\\"#0d0e12\\"},[{\\"lineHeight\\":30},[{\\"marginRight\\":4},null]],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":30,\\"color\\":\\"#0d0e12\\"},[{\\"lineHeight\\":30},[{\\"marginRight\\":4},null]],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":30,\\"color\\":\\"#0d0e12\\"},[{\\"lineHeight\\":30},[{\\"marginRight\\":4},null]],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":30,\\"color\\":\\"#0d0e12\\"},[{\\"lineHeight\\":30},[{\\"marginRight\\":4},null]],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":30,\\"color\\":\\"#0d0e12\\"},[{\\"lineHeight\\":30},[{\\"marginRight\\":4},null]],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":30,\\"color\\":\\"#ffd21f\\"},[{\\"lineHeight\\":30},[{\\"marginRight\\":4},null]],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":30,\\"color\\":\\"#0d0e12\\"},[{\\"lineHeight\\":30},[{\\"marginRight\\":4},{\\"margin\\":10}]],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]"`;
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`Storyshots SearchBox Basic 1`] = `"{\\"type\\":\\"View\\",\\"props\\":{\\"testID\\":\\"searchbox\\",\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"marginBottom\\":10},{\\"margin\\":16,\\"marginBottom\\":16}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"position\\":\\"relative\\",\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"TextInput\\",\\"props\\":{\\"style\\":[{\\"color\\":\\"#0d0e12\\"},[{\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"Inter\\",\\"fontWeight\\":\\"400\\",\\"height\\":48,\\"fontSize\\":16,\\"paddingHorizontal\\":16,\\"paddingVertical\\":10,\\"borderWidth\\":1,\\"borderRadius\\":4},null,{\\"paddingRight\\":45},{\\"backgroundColor\\":\\"#ffffff\\",\\"borderColor\\":\\"#cbcbcc\\",\\"color\\":\\"#0d0e12\\"},null,null],{\\"textAlign\\":\\"auto\\"}],\\"placeholderTextColor\\":\\"#9ca2a8\\",\\"keyboardAppearance\\":\\"light\\",\\"autoCorrect\\":false,\\"autoCapitalize\\":\\"none\\",\\"underlineColorAndroid\\":\\"transparent\\",\\"accessibilityLabel\\":\\"Search\\",\\"placeholder\\":\\"Search\\",\\"value\\":\\"\\",\\"blurOnSubmit\\":true,\\"returnKeyType\\":\\"search\\"},\\"children\\":null},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#2f343d\\"},[{\\"position\\":\\"absolute\\"},{\\"right\\":12}],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]}"`;
|
||||
exports[`Storyshots SearchBox Basic 1`] = `"{\\"type\\":\\"View\\",\\"props\\":{\\"testID\\":\\"searchbox\\",\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"marginBottom\\":10},{\\"margin\\":16,\\"marginBottom\\":16}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"position\\":\\"relative\\",\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"TextInput\\",\\"props\\":{\\"style\\":[{\\"color\\":\\"#0d0e12\\"},[{\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"Inter\\",\\"fontWeight\\":\\"400\\",\\"height\\":48,\\"fontSize\\":16,\\"paddingHorizontal\\":16,\\"paddingVertical\\":10,\\"borderWidth\\":1,\\"borderRadius\\":4},null,{\\"paddingRight\\":45},{\\"backgroundColor\\":\\"#ffffff\\",\\"borderColor\\":\\"#cbcbcc\\",\\"color\\":\\"#0d0e12\\"},null,null],{\\"textAlign\\":\\"auto\\"}],\\"placeholderTextColor\\":\\"#9ca2a8\\",\\"keyboardAppearance\\":\\"light\\",\\"autoCorrect\\":false,\\"autoCapitalize\\":\\"none\\",\\"underlineColorAndroid\\":\\"transparent\\",\\"accessibilityLabel\\":\\"Search\\",\\"placeholder\\":\\"Search\\",\\"value\\":\\"\\",\\"blurOnSubmit\\":true,\\"returnKeyType\\":\\"search\\"},\\"children\\":null},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#2f343d\\"},[{\\"lineHeight\\":20},[{\\"position\\":\\"absolute\\"},{\\"right\\":12}]],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]}"`;
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,3 +1,3 @@
|
|||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`Storyshots Status All 1`] = `"[{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":32,\\"color\\":\\"#2de0a5\\"},[{\\"width\\":32,\\"height\\":32,\\"textAlignVertical\\":\\"center\\"},null],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":32,\\"color\\":\\"#f5455c\\"},[{\\"width\\":32,\\"height\\":32,\\"textAlignVertical\\":\\"center\\"},null],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":32,\\"color\\":\\"#ffd21f\\"},[{\\"width\\":32,\\"height\\":32,\\"textAlignVertical\\":\\"center\\"},null],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":32,\\"color\\":\\"#9ea2a8\\"},[{\\"width\\":32,\\"height\\":32,\\"textAlignVertical\\":\\"center\\"},null],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":32,\\"color\\":\\"#F38C39\\"},[{\\"width\\":32,\\"height\\":32,\\"textAlignVertical\\":\\"center\\"},null],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":32,\\"color\\":\\"#cbced1\\"},[{\\"width\\":32,\\"height\\":32,\\"textAlignVertical\\":\\"center\\"},null],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":32,\\"color\\":\\"#cbced1\\"},[{\\"width\\":32,\\"height\\":32,\\"textAlignVertical\\":\\"center\\"},null],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":60,\\"color\\":\\"#2de0a5\\"},[{\\"width\\":60,\\"height\\":60,\\"textAlignVertical\\":\\"center\\"},null],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]"`;
|
||||
exports[`Storyshots Status All 1`] = `"[{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":32,\\"color\\":\\"#2de0a5\\"},[{\\"lineHeight\\":32},[{\\"width\\":32,\\"height\\":32,\\"textAlignVertical\\":\\"center\\"},null]],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":32,\\"color\\":\\"#f5455c\\"},[{\\"lineHeight\\":32},[{\\"width\\":32,\\"height\\":32,\\"textAlignVertical\\":\\"center\\"},null]],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":32,\\"color\\":\\"#ffd21f\\"},[{\\"lineHeight\\":32},[{\\"width\\":32,\\"height\\":32,\\"textAlignVertical\\":\\"center\\"},null]],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":32,\\"color\\":\\"#9ea2a8\\"},[{\\"lineHeight\\":32},[{\\"width\\":32,\\"height\\":32,\\"textAlignVertical\\":\\"center\\"},null]],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":32,\\"color\\":\\"#F38C39\\"},[{\\"lineHeight\\":32},[{\\"width\\":32,\\"height\\":32,\\"textAlignVertical\\":\\"center\\"},null]],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":32,\\"color\\":\\"#cbced1\\"},[{\\"lineHeight\\":32},[{\\"width\\":32,\\"height\\":32,\\"textAlignVertical\\":\\"center\\"},null]],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":32,\\"color\\":\\"#cbced1\\"},[{\\"lineHeight\\":32},[{\\"width\\":32,\\"height\\":32,\\"textAlignVertical\\":\\"center\\"},null]],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":60,\\"color\\":\\"#2de0a5\\"},[{\\"lineHeight\\":60},[{\\"width\\":60,\\"height\\":60,\\"textAlignVertical\\":\\"center\\"},null]],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]"`;
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,3 +1,3 @@
|
|||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`Storyshots CollapsibleQuote Item 1`] = `"{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"padding\\":10}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"accessible\\":true,\\"testID\\":\\"collapsibleQuoteTouchable-Engineering (9 today)\\",\\"hitSlop\\":{\\"top\\":4,\\"right\\":4,\\"bottom\\":4,\\"left\\":4},\\"focusable\\":true,\\"collapsable\\":false,\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"marginTop\\":6,\\"borderWidth\\":1,\\"borderRadius\\":4,\\"minHeight\\":40,\\"backgroundColor\\":\\"#f3f4f5\\",\\"borderLeftColor\\":\\"#CBCED1\\",\\"borderTopColor\\":\\"#e1e5e8\\",\\"borderRightColor\\":\\"#e1e5e8\\",\\"borderBottomColor\\":\\"#e1e5e8\\",\\"borderLeftWidth\\":2,\\"opacity\\":1}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"borderRadius\\":4,\\"padding\\":8}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"Inter\\",\\"fontWeight\\":\\"500\\"},{\\"color\\":\\"#6C727A\\"}]},\\"children\\":[\\"Engineering (9 today)\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"width\\":20,\\"height\\":20,\\"right\\":8,\\"top\\":8,\\"justifyContent\\":\\"center\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":22,\\"color\\":\\"#6C727A\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]}]}"`;
|
||||
exports[`Storyshots CollapsibleQuote Item 1`] = `"{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"padding\\":10}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"accessible\\":true,\\"testID\\":\\"collapsibleQuoteTouchable-Engineering (9 today)\\",\\"hitSlop\\":{\\"top\\":4,\\"right\\":4,\\"bottom\\":4,\\"left\\":4},\\"focusable\\":true,\\"collapsable\\":false,\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"marginTop\\":6,\\"borderWidth\\":1,\\"borderRadius\\":4,\\"minHeight\\":40,\\"backgroundColor\\":\\"#f3f4f5\\",\\"borderLeftColor\\":\\"#CBCED1\\",\\"borderTopColor\\":\\"#e1e5e8\\",\\"borderRightColor\\":\\"#e1e5e8\\",\\"borderBottomColor\\":\\"#e1e5e8\\",\\"borderLeftWidth\\":2,\\"opacity\\":1}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"borderRadius\\":4,\\"padding\\":8}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"Inter\\",\\"fontWeight\\":\\"500\\"},{\\"color\\":\\"#6C727A\\"}]},\\"children\\":[\\"Engineering (9 today)\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"width\\":20,\\"height\\":20,\\"right\\":8,\\"top\\":8,\\"justifyContent\\":\\"center\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"selectable\\":false,\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":22,\\"color\\":\\"#6C727A\\"},[{\\"lineHeight\\":22},null],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]}]}"`;
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -147,7 +147,7 @@ android {
|
|||
minSdkVersion rootProject.ext.minSdkVersion
|
||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||
versionCode VERSIONCODE as Integer
|
||||
versionName "4.41.0"
|
||||
versionName "4.42.0"
|
||||
vectorDrawables.useSupportLibrary = true
|
||||
if (!isFoss) {
|
||||
manifestPlaceholders = [BugsnagAPIKey: BugsnagAPIKey as String]
|
||||
|
|
|
@ -4,15 +4,18 @@ import React, { forwardRef, isValidElement, useEffect, useImperativeHandle, useR
|
|||
import { Keyboard, useWindowDimensions } from 'react-native';
|
||||
import { Easing, useDerivedValue, useSharedValue } from 'react-native-reanimated';
|
||||
import BottomSheet, { BottomSheetBackdrop } from '@gorhom/bottom-sheet';
|
||||
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
||||
|
||||
import { useTheme } from '../../theme';
|
||||
import { isIOS, isTablet } from '../../lib/methods/helpers';
|
||||
import { Handle } from './Handle';
|
||||
import { TActionSheetOptions } from './Provider';
|
||||
import BottomSheetContent from './BottomSheetContent';
|
||||
import styles from './styles';
|
||||
import styles, { ITEM_HEIGHT } from './styles';
|
||||
|
||||
export const ACTION_SHEET_ANIMATION_DURATION = 250;
|
||||
const HANDLE_HEIGHT = 28;
|
||||
const CANCEL_HEIGHT = 64;
|
||||
|
||||
const ANIMATION_CONFIG = {
|
||||
duration: ACTION_SHEET_ANIMATION_DURATION,
|
||||
|
@ -23,11 +26,11 @@ const ANIMATION_CONFIG = {
|
|||
const ActionSheet = React.memo(
|
||||
forwardRef(({ children }: { children: React.ReactElement }, ref) => {
|
||||
const { colors } = useTheme();
|
||||
const { height: windowHeight } = useWindowDimensions();
|
||||
const { bottom } = useSafeAreaInsets();
|
||||
const bottomSheetRef = useRef<BottomSheet>(null);
|
||||
const [data, setData] = useState<TActionSheetOptions>({} as TActionSheetOptions);
|
||||
const [isVisible, setVisible] = useState(false);
|
||||
const { width, height } = useWindowDimensions();
|
||||
const isLandscape = width > height;
|
||||
const animatedContentHeight = useSharedValue(0);
|
||||
const animatedHandleHeight = useSharedValue(0);
|
||||
const animatedDataSnaps = useSharedValue<TActionSheetOptions['snaps']>([]);
|
||||
|
@ -49,11 +52,33 @@ const ActionSheet = React.memo(
|
|||
layout: { height }
|
||||
}
|
||||
}) => {
|
||||
animatedContentHeight.value = height;
|
||||
/**
|
||||
* This logic is only necessary to prevent the action sheet from
|
||||
* occupying the entire screen when the dynamic content is too big.
|
||||
*/
|
||||
animatedContentHeight.value = Math.min(height, windowHeight * 0.8);
|
||||
},
|
||||
[animatedContentHeight]
|
||||
[animatedContentHeight, windowHeight]
|
||||
);
|
||||
|
||||
const maxSnap = Math.min(
|
||||
(ITEM_HEIGHT + 0.5) * (data?.options?.length || 0) +
|
||||
HANDLE_HEIGHT +
|
||||
// Custom header height
|
||||
(data?.headerHeight || 0) +
|
||||
// Insets bottom height (Notch devices)
|
||||
bottom +
|
||||
// Cancel button height
|
||||
(data?.hasCancel ? CANCEL_HEIGHT : 0),
|
||||
windowHeight * 0.8
|
||||
);
|
||||
|
||||
/*
|
||||
* if the action sheet cover more than 60% of the screen height,
|
||||
* we'll provide more one snap of 50%
|
||||
*/
|
||||
const snaps = maxSnap > windowHeight * 0.6 && !data.snaps ? ['50%', maxSnap] : [maxSnap];
|
||||
|
||||
const toggleVisible = () => setVisible(!isVisible);
|
||||
|
||||
const hide = () => {
|
||||
|
@ -82,11 +107,6 @@ const ActionSheet = React.memo(
|
|||
}
|
||||
}, [isVisible]);
|
||||
|
||||
// Hides action sheet when orientation changes
|
||||
useEffect(() => {
|
||||
setVisible(false);
|
||||
}, [isLandscape]);
|
||||
|
||||
useImperativeHandle(ref, () => ({
|
||||
showActionSheet: show,
|
||||
hideActionSheet: hide
|
||||
|
@ -118,11 +138,11 @@ const ActionSheet = React.memo(
|
|||
[]
|
||||
);
|
||||
|
||||
const bottomSheet = isLandscape || isTablet ? styles.bottomSheet : {};
|
||||
const bottomSheet = isTablet ? styles.bottomSheet : {};
|
||||
|
||||
// Must need this prop to avoid keyboard dismiss
|
||||
// when is android tablet and the input text is focused
|
||||
const androidTablet: any = isTablet && isLandscape && !isIOS ? { android_keyboardInputMode: 'adjustResize' } : {};
|
||||
const androidTablet: any = isTablet && !isIOS ? { android_keyboardInputMode: 'adjustResize' } : {};
|
||||
|
||||
return (
|
||||
<>
|
||||
|
@ -130,10 +150,11 @@ const ActionSheet = React.memo(
|
|||
{isVisible && (
|
||||
<BottomSheet
|
||||
ref={bottomSheetRef}
|
||||
snapPoints={animatedSnapPoints}
|
||||
// If data.options exist, we calculate snaps to be precise, otherwise we cal
|
||||
snapPoints={data.options?.length ? snaps : animatedSnapPoints}
|
||||
handleHeight={animatedHandleHeight}
|
||||
// We need undefined to enable vertical swipe gesture inside the bottom sheet like in reaction picker
|
||||
contentHeight={data.snaps?.length ? undefined : animatedContentHeight}
|
||||
contentHeight={data.snaps?.length || data.options?.length ? undefined : animatedContentHeight}
|
||||
animationConfigs={ANIMATION_CONFIG}
|
||||
animateOnMount={true}
|
||||
backdropComponent={renderBackdrop}
|
||||
|
|
|
@ -43,12 +43,12 @@ const BottomSheetContent = React.memo(({ options, hasCancel, hide, children, onL
|
|||
data={options}
|
||||
refreshing={false}
|
||||
keyExtractor={item => item.title}
|
||||
bounces={true}
|
||||
bounces={false}
|
||||
renderItem={renderItem}
|
||||
style={{ backgroundColor: colors.focusedBackground, paddingBottom: bottom }}
|
||||
style={{ backgroundColor: colors.focusedBackground }}
|
||||
keyboardDismissMode='interactive'
|
||||
indicatorStyle='black'
|
||||
contentContainerStyle={styles.content}
|
||||
contentContainerStyle={{ paddingBottom: bottom }}
|
||||
ItemSeparatorComponent={List.Separator}
|
||||
ListHeaderComponent={List.Separator}
|
||||
ListFooterComponent={renderFooter}
|
||||
|
@ -57,7 +57,7 @@ const BottomSheetContent = React.memo(({ options, hasCancel, hide, children, onL
|
|||
);
|
||||
}
|
||||
return (
|
||||
<BottomSheetView testID='action-sheet' style={[styles.contentContainer, { paddingBottom: bottom }]} onLayout={onLayout}>
|
||||
<BottomSheetView testID='action-sheet' style={styles.contentContainer} onLayout={onLayout}>
|
||||
{children}
|
||||
</BottomSheetView>
|
||||
);
|
||||
|
|
|
@ -8,7 +8,7 @@ import { useTheme } from '../../theme';
|
|||
export const Handle = React.memo(() => {
|
||||
const { theme } = useTheme();
|
||||
return (
|
||||
<View style={[styles.handle]} testID='action-sheet-handle'>
|
||||
<View style={styles.handle} testID='action-sheet-handle'>
|
||||
<View style={[styles.handleIndicator, { backgroundColor: themes[theme].auxiliaryText }]} />
|
||||
</View>
|
||||
);
|
||||
|
|
|
@ -15,10 +15,12 @@ export type TActionSheetOptionsItem = {
|
|||
|
||||
export type TActionSheetOptions = {
|
||||
options?: TActionSheetOptionsItem[];
|
||||
headerHeight?: number;
|
||||
customHeader?: React.ReactElement | null;
|
||||
hasCancel?: boolean;
|
||||
type?: string;
|
||||
// children can both use snaps or dynamic
|
||||
children?: React.ReactElement | null;
|
||||
/** Required if your action sheet needs vertical scroll */
|
||||
snaps?: (string | number)[];
|
||||
onClose?: () => void;
|
||||
enableContentPanningGesture?: boolean;
|
||||
|
|
|
@ -19,9 +19,6 @@ export default StyleSheet.create({
|
|||
separator: {
|
||||
marginHorizontal: 16
|
||||
},
|
||||
content: {
|
||||
paddingTop: 16
|
||||
},
|
||||
titleContainer: {
|
||||
flex: 1
|
||||
},
|
||||
|
|
|
@ -16,8 +16,8 @@ export interface ICustomIcon extends TextProps {
|
|||
color: string;
|
||||
}
|
||||
|
||||
const CustomIcon = ({ name, size, color, ...props }: ICustomIcon) => (
|
||||
const CustomIcon = ({ name, size, color, style, ...props }: ICustomIcon) => (
|
||||
// @ts-ignore TODO remove this after update @types/react-native to 0.65.0
|
||||
<IconSet name={name} size={size} color={color} {...props} />
|
||||
<IconSet name={name} size={size} color={color} style={[{ lineHeight: size }, style]} {...props} />
|
||||
);
|
||||
export { CustomIcon };
|
||||
|
|
|
@ -31,6 +31,7 @@ interface THeaderFooter {
|
|||
theme: TSupportedThemes;
|
||||
}
|
||||
|
||||
export const HEADER_HEIGHT = 54;
|
||||
const ITEM_SIZE = 36;
|
||||
const CONTAINER_MARGIN = 8;
|
||||
const ITEM_MARGIN = 8;
|
||||
|
@ -38,7 +39,8 @@ const ITEM_MARGIN = 8;
|
|||
const styles = StyleSheet.create({
|
||||
container: {
|
||||
alignItems: 'center',
|
||||
marginHorizontal: CONTAINER_MARGIN
|
||||
marginHorizontal: CONTAINER_MARGIN,
|
||||
paddingBottom: 16
|
||||
},
|
||||
headerItem: {
|
||||
height: ITEM_SIZE,
|
||||
|
|
|
@ -13,7 +13,7 @@ import { LISTENER } from '../Toast';
|
|||
import EventEmitter from '../../lib/methods/helpers/events';
|
||||
import { showConfirmationAlert } from '../../lib/methods/helpers/info';
|
||||
import { TActionSheetOptionsItem, useActionSheet, ACTION_SHEET_ANIMATION_DURATION } from '../ActionSheet';
|
||||
import Header, { IHeader } from './Header';
|
||||
import Header, { HEADER_HEIGHT, IHeader } from './Header';
|
||||
import events from '../../lib/methods/helpers/log/events';
|
||||
import { IApplicationState, IEmoji, ILoggedUser, TAnyMessageModel, TSubscriptionModel } from '../../definitions';
|
||||
import { getPermalinkMessage } from '../../lib/methods';
|
||||
|
@ -511,6 +511,7 @@ const MessageActions = React.memo(
|
|||
await getPermissions();
|
||||
showActionSheet({
|
||||
options: getOptions(message),
|
||||
headerHeight: HEADER_HEIGHT,
|
||||
customHeader:
|
||||
!isReadOnly || room.reactWhenReadOnly ? (
|
||||
<Header handleReaction={handleReaction} isMasterDetail={isMasterDetail} message={message} />
|
||||
|
|
|
@ -20,26 +20,31 @@ interface IMessageBoxRecordAudioProps {
|
|||
onStart: Function;
|
||||
}
|
||||
|
||||
const RECORDING_EXTENSION = '.m4a';
|
||||
const RECORDING_EXTENSION = '.aac';
|
||||
const RECORDING_SETTINGS = {
|
||||
android: {
|
||||
// Settings related to audio encoding.
|
||||
extension: RECORDING_EXTENSION,
|
||||
outputFormat: Audio.RECORDING_OPTION_ANDROID_OUTPUT_FORMAT_MPEG_4,
|
||||
outputFormat: Audio.RECORDING_OPTION_ANDROID_OUTPUT_FORMAT_AAC_ADTS,
|
||||
audioEncoder: Audio.RECORDING_OPTION_ANDROID_AUDIO_ENCODER_AAC,
|
||||
// Settings related to audio quality.
|
||||
sampleRate: Audio.RECORDING_OPTIONS_PRESET_LOW_QUALITY.android.sampleRate,
|
||||
numberOfChannels: Audio.RECORDING_OPTIONS_PRESET_LOW_QUALITY.android.numberOfChannels,
|
||||
bitRate: Audio.RECORDING_OPTIONS_PRESET_LOW_QUALITY.android.bitRate
|
||||
},
|
||||
ios: {
|
||||
// Settings related to audio encoding.
|
||||
extension: RECORDING_EXTENSION,
|
||||
audioQuality: Audio.RECORDING_OPTION_IOS_AUDIO_QUALITY_MIN,
|
||||
audioQuality: Audio.RECORDING_OPTION_IOS_AUDIO_QUALITY_MEDIUM,
|
||||
outputFormat: Audio.RECORDING_OPTION_IOS_OUTPUT_FORMAT_MPEG4AAC,
|
||||
// Settings related to audio quality.
|
||||
sampleRate: Audio.RECORDING_OPTIONS_PRESET_LOW_QUALITY.ios.sampleRate,
|
||||
numberOfChannels: Audio.RECORDING_OPTIONS_PRESET_LOW_QUALITY.ios.numberOfChannels,
|
||||
bitRate: Audio.RECORDING_OPTIONS_PRESET_LOW_QUALITY.ios.bitRate,
|
||||
outputFormat: Audio.RECORDING_OPTION_IOS_OUTPUT_FORMAT_MPEG4AAC
|
||||
bitRate: Audio.RECORDING_OPTIONS_PRESET_LOW_QUALITY.ios.bitRate
|
||||
},
|
||||
web: {}
|
||||
};
|
||||
|
||||
const RECORDING_MODE = {
|
||||
allowsRecordingIOS: true,
|
||||
playsInSilentModeIOS: true,
|
||||
|
@ -159,7 +164,7 @@ export default class RecordAudio extends React.PureComponent<IMessageBoxRecordAu
|
|||
const fileURI = this.recording.getURI();
|
||||
const fileData = await getInfoAsync(fileURI as string);
|
||||
const fileInfo = {
|
||||
name: `${Date.now()}.m4a`,
|
||||
name: `${Date.now()}.aac`,
|
||||
mime: 'audio/aac',
|
||||
type: 'audio/aac',
|
||||
store: 'Uploads',
|
||||
|
|
|
@ -15,8 +15,8 @@ const styles = StyleSheet.create({
|
|||
});
|
||||
|
||||
interface IRoomTypeIcon {
|
||||
type?: string;
|
||||
userId?: string | null;
|
||||
type: string;
|
||||
isGroupChat?: boolean;
|
||||
teamMain?: boolean;
|
||||
status?: TUserStatus;
|
||||
|
|
|
@ -55,7 +55,8 @@ const styles = StyleSheet.create({
|
|||
},
|
||||
loading: {
|
||||
height: 0,
|
||||
borderWidth: 0
|
||||
borderWidth: 0,
|
||||
marginTop: 0
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -36,6 +36,11 @@ export interface ILivechatVisitor extends IRocketChatRecord {
|
|||
utc?: number;
|
||||
}
|
||||
|
||||
export interface ILivechatVisitorModified extends ILivechatVisitor {
|
||||
os?: string;
|
||||
browser?: string;
|
||||
}
|
||||
|
||||
export interface ILivechatVisitorDTO {
|
||||
id: string;
|
||||
token: string;
|
||||
|
|
|
@ -111,7 +111,10 @@ export interface ISubscription {
|
|||
uploads: RelationModified<TUploadModel>;
|
||||
}
|
||||
|
||||
export type TSubscriptionModel = ISubscription & Model;
|
||||
export type TSubscriptionModel = ISubscription &
|
||||
Model & {
|
||||
asPlain: () => ISubscription;
|
||||
};
|
||||
export type TSubscription = TSubscriptionModel | ISubscription;
|
||||
|
||||
// https://github.com/RocketChat/Rocket.Chat/blob/a88a96fcadd925b678ff27ada37075e029f78b5e/definition/ISubscription.ts#L8
|
||||
|
|
|
@ -469,5 +469,6 @@
|
|||
"Log_analytics_events": "تحليلات سجل الأحداث",
|
||||
"Open_Livechats": "محادثات مباشرة جارية",
|
||||
"Broadcast_hint": "يمكن فقط للمستخدمين المصرح لهم كتابة رسائل جديدة، ولكن سيتمكن المستخدمون الآخرون من الرد",
|
||||
"and_N_more": "و{{count}} آخرين"
|
||||
"and_N_more": "و{{count}} آخرين",
|
||||
"Audio": "صوت"
|
||||
}
|
|
@ -555,7 +555,6 @@
|
|||
"Enabled_E2E_Encryption_for_this_room": "hat E2E-Verschlüsselung für diesen Raum aktiviert",
|
||||
"Disabled_E2E_Encryption_for_this_room": "hat E2E-Verschlüsselung für diesen Raum deaktiviert",
|
||||
"Teams": "Teams",
|
||||
"No_team_channels_found": "Keine Kanäle gefunden",
|
||||
"Team_not_found": "Team nicht gefunden",
|
||||
"Create_Team": "Team erstellen",
|
||||
"Team_Name": "Team-Name",
|
||||
|
@ -691,6 +690,7 @@
|
|||
"Waiting_for_answer": "Warten auf Antwort",
|
||||
"Call_ended": "Anruf beendet",
|
||||
"Call_was_not_answered": "Anruf wurde nicht beantwortet",
|
||||
"Call_rejected": "Anruf abgelehnt",
|
||||
"Call_back": "Rückruf",
|
||||
"Call_again": "Erneut anrufen",
|
||||
"Call_ongoing": "Aufruf laufend",
|
||||
|
@ -724,5 +724,10 @@
|
|||
"Presence_Cap_Warning_Title": "Benutzerstatus vorübergehend deaktiviert",
|
||||
"Presence_Cap_Warning_Description": "Die Anzahl der aktiven Verbindungen hat das Limit für den Arbeitsbereich erreicht. Daher ist der Dienst, der den Benutzerstatus verwaltet, deaktiviert. Er kann in den Arbeitsbereichseinstellungen manuell wieder aktiviert werden.",
|
||||
"Learn_more": "Mehr erfahren",
|
||||
"and_N_more": "und {{count}} weitere"
|
||||
"and_N_more": "und {{count}} weitere",
|
||||
"Audio": "Audio",
|
||||
"decline": "Ablehnen",
|
||||
"accept": "Annehmen",
|
||||
"Incoming_call_from": "Eingehender Anruf von",
|
||||
"Call_started": "Anruf gestartet"
|
||||
}
|
|
@ -730,7 +730,7 @@
|
|||
"Media_auto_download": "Media auto-download",
|
||||
"Images": "Images",
|
||||
"Video": "Video",
|
||||
"Wi_Fi_and_mobile_data":"Wi-Fi and mobile data",
|
||||
"Wi_Fi_and_mobile_data": "Wi-Fi and mobile data",
|
||||
"Wi_Fi": "Wi-Fi",
|
||||
"Off": "Off",
|
||||
"Audio": "Audio",
|
||||
|
@ -738,11 +738,16 @@
|
|||
"Person_or_channel": "Person or channel",
|
||||
"Select": "Select",
|
||||
"Nickname": "Nickname",
|
||||
"Bio":"Bio",
|
||||
"Bio": "Bio",
|
||||
"decline": "Decline",
|
||||
"accept": "Accept",
|
||||
"Incoming_call_from": "Incoming call from",
|
||||
"Call_started": "Call started",
|
||||
"Message_has_been_shared":"Message has been shared",
|
||||
"Jitsi_may_require_authentication": "Jitsi may require authentication",
|
||||
"Jitsi_authentication_before_making_calls_admin": "Jitsi may require authentication before making calls. To learn more about their policies, visit the Jitsi website. You can also update the default app for video calls in the preferences.",
|
||||
"Jitsi_authentication_before_making_calls": "Jitsi may require authentication before making calls. To learn more about their policies, visit the Jitsi website.",
|
||||
"Jitsi_authentication_before_making_calls_ask_admin": "If you believe there are problems with Jitsi and its authentication, ask a workspace administrator for help.",
|
||||
"Continue": "Continue",
|
||||
"Message_has_been_shared": "Message has been shared",
|
||||
"No_channels_in_team": "No Channels on this team"
|
||||
}
|
||||
|
|
|
@ -276,5 +276,6 @@
|
|||
"Search_messages": "Buscar mensajes",
|
||||
"Add_server": "Añadir servidor",
|
||||
"Broadcast_hint": "Sólo los usuarios autorizados pueden escribir nuevos mensajes, el resto podrán responder sobre los mismos.",
|
||||
"and_N_more": "y {{count}} más"
|
||||
"and_N_more": "y {{count}} más",
|
||||
"Audio": "Audio"
|
||||
}
|
|
@ -555,7 +555,6 @@
|
|||
"Enabled_E2E_Encryption_for_this_room": "otti täyden salauksen käyttöön tässä huoneessa",
|
||||
"Disabled_E2E_Encryption_for_this_room": "poisti täyden salauksen käytöstä tässä huoneessa",
|
||||
"Teams": "Tiimit",
|
||||
"No_team_channels_found": "Kanavia ei löydy",
|
||||
"Team_not_found": "Tiimiä ei löydy",
|
||||
"Create_Team": "Luo tiimi",
|
||||
"Team_Name": "Tiimin nimi",
|
||||
|
@ -701,5 +700,6 @@
|
|||
"Reply_in_direct_message": "Vastaa suoralla viestillä",
|
||||
"room_archived": "arkistoi huoneen",
|
||||
"room_unarchived": "palautti huoneen arkistosta",
|
||||
"and_N_more": "ja {{count}} lisää"
|
||||
"and_N_more": "ja {{count}} lisää",
|
||||
"Audio": "Ääni"
|
||||
}
|
|
@ -520,7 +520,6 @@
|
|||
"Enter_workspace_URL": "Entrez l'URL de l'espace de travail",
|
||||
"Workspace_URL_Example": "Ex. votre-société.rocket.chat",
|
||||
"Teams": "Equipes",
|
||||
"No_team_channels_found": "Aucun canal trouvé",
|
||||
"Team_not_found": "Equipe non trouvée",
|
||||
"Create_Team": "Créer une équipe",
|
||||
"Team_Name": "Nom de l'équipe",
|
||||
|
@ -617,5 +616,6 @@
|
|||
"Omnichannel_queue": "File d'attente omnicanale",
|
||||
"Empty": "Vide",
|
||||
"Broadcast_hint": "Seuls les utilisateurs autorisés peuvent écrire de nouveaux messages, mais les autres utilisateurs pourront répondre.",
|
||||
"and_N_more": "et {{count}} de plus"
|
||||
"and_N_more": "et {{count}} de plus",
|
||||
"Audio": "Audio"
|
||||
}
|
|
@ -521,5 +521,6 @@
|
|||
"Workspace_URL_Example": "Es. tua-azienda.rocket.chat",
|
||||
"Open_Livechats": "Chat in corso",
|
||||
"Broadcast_hint": "Solo gli utenti autorizzati possono scrivere messaggi, ma gli altri utenti saranno in grado di rispondere",
|
||||
"and_N_more": "e altri {{count}}"
|
||||
"and_N_more": "e altri {{count}}",
|
||||
"Audio": "Audio"
|
||||
}
|
|
@ -386,5 +386,6 @@
|
|||
"Clear": "クリア",
|
||||
"This_will_clear_all_your_offline_data": "オフラインデータをすべて削除します。",
|
||||
"Broadcast_hint": "許可されたユーザーのみが新しいメッセージを書き込めます。他のユーザーは返信することができます",
|
||||
"and_N_more": "さらに{{count}}つ"
|
||||
"and_N_more": "さらに{{count}}つ",
|
||||
"Audio": "音声"
|
||||
}
|
|
@ -520,7 +520,6 @@
|
|||
"Enter_workspace_URL": "Voer de werkruimte-URL in",
|
||||
"Workspace_URL_Example": "Vb. uw-bedrijf.rocket.chat",
|
||||
"Teams": "Teams",
|
||||
"No_team_channels_found": "Geen kanalen gevonden",
|
||||
"Team_not_found": "Team niet gevonden",
|
||||
"Create_Team": "Team aanmaken",
|
||||
"Team_Name": "Teamnaam",
|
||||
|
@ -617,5 +616,6 @@
|
|||
"Omnichannel_queue": "Omnichannel-wachtrij",
|
||||
"Empty": "Leeg",
|
||||
"Broadcast_hint": "Alleen geautoriseerde gebruikers kunnen nieuwe berichten schrijven, maar de andere gebruikers zullen kunnen antwoorden",
|
||||
"and_N_more": "en nog {{count}}"
|
||||
"and_N_more": "en nog {{count}}",
|
||||
"Audio": "Audio"
|
||||
}
|
|
@ -555,7 +555,6 @@
|
|||
"Enabled_E2E_Encryption_for_this_room": "habilitou criptografia para essa sala",
|
||||
"Disabled_E2E_Encryption_for_this_room": "desabilitou criptografia para essa sala",
|
||||
"Teams": "Times",
|
||||
"No_team_channels_found": "Nenhum canal encontrado",
|
||||
"Team_not_found": "Time não encontrado",
|
||||
"Create_Team": "Criar time",
|
||||
"Team_Name": "Nome do time",
|
||||
|
@ -713,24 +712,29 @@
|
|||
"Discard_changes_description": "Todas as alterações serão perdidas, se você sair sem salvar.",
|
||||
"Presence_Cap_Warning_Title": "Status do usuário desabilitado temporariamente",
|
||||
"Presence_Cap_Warning_Description": "O limite de conexões ativas para a workspace foi atingido, por isso o serviço responsável pela presença dos usuários está temporariamente desabilitado. Ele pode ser reabilitado manualmente nas configurações da workspace.",
|
||||
"Learn_more": "Saiba mais",
|
||||
"Learn_more": "Saiba mais",
|
||||
"and_N_more": "e mais {{count}}",
|
||||
"Media_auto_download": "Download automático de mídia",
|
||||
"Images": "Imagens",
|
||||
"Video": "Vídeo",
|
||||
"Wi_Fi_and_mobile_data":"Wi-Fi e dados móveis",
|
||||
"Wi_Fi_and_mobile_data": "Wi-Fi e dados móveis",
|
||||
"Wi_Fi": "Wi-Fi",
|
||||
"Off": "Desativado",
|
||||
"Audio": "Áudio",
|
||||
"decline": "Recusar",
|
||||
"accept": "Aceitar",
|
||||
"Incoming_call_from": "Chamada recebida de",
|
||||
"Call_started": "Chamada Iniciada",
|
||||
"Forward_message": "Encaminhar mensagem",
|
||||
"Person_or_channel": "Pessoa ou canal",
|
||||
"Select": "Selecionar",
|
||||
"Nickname": "Apelido",
|
||||
"Bio": "Biografia",
|
||||
"Message_has_been_shared":"Menssagem foi compartilhada",
|
||||
"No_channels_in_team": "Nenhum canal nesta equipe"
|
||||
"No_channels_in_team": "Nenhum canal nesta equipe",
|
||||
"Jitsi_may_requires_authentication": "Jitsi pode exigir autenticação",
|
||||
"Jitsi_authentication_before_making_calls_admin": "Jitsi pode exigir autenticação antes de fazer chamadas. Para saber mais sobre as políticas deles, visite o site do Jitsi. Você também pode atualizar o aplicativo padrão para chamadas de vídeo nas preferências.",
|
||||
"Jitsi_authentication_before_making_calls": "Jitsi pode exigir autenticação antes de fazer chamadas. Para saber mais sobre suas políticas, visite o site do Jitsi.",
|
||||
"Jitsi_authentication_before_making_calls_ask_admin": "Se você acredita que há problemas com o Jitsi e sua autenticação, peça ajuda a um administrador do espaço de trabalho.",
|
||||
"Continue": "Continuar",
|
||||
"decline": "Recusar",
|
||||
"accept": "Aceitar",
|
||||
"Incoming_call_from": "Chamada recebida de",
|
||||
"Call_started": "Chamada Iniciada"
|
||||
}
|
|
@ -349,5 +349,6 @@
|
|||
"You_will_not_be_able_to_recover_this_message": "Você será incapaz de recuperar esta mensagem!",
|
||||
"Open_Livechats": "Chats em andamento",
|
||||
"Broadcast_hint": "Apenas utilizadores autorizados podem escrever novas mensagens, mas os outros utilizadores poderão responder",
|
||||
"and_N_more": "e mais {{count}}"
|
||||
"and_N_more": "e mais {{count}}",
|
||||
"Audio": "Áudio"
|
||||
}
|
|
@ -531,7 +531,6 @@
|
|||
"Enter_workspace_URL": "Введите URL вашего рабочего пространства",
|
||||
"Workspace_URL_Example": "Например, your-company.rocket.chat",
|
||||
"Teams": "Команды",
|
||||
"No_team_channels_found": "Каналы не найдены",
|
||||
"Team_not_found": "Команда не найдена",
|
||||
"Create_Team": "Создать Команду",
|
||||
"Team_Name": "Имя Команды",
|
||||
|
@ -669,5 +668,6 @@
|
|||
"Start_a_call": "Начать звонок",
|
||||
"Call": "Звонок",
|
||||
"Reply_in_direct_message": "Ответить в личном сообщении",
|
||||
"and_N_more": "и еще {{count}}"
|
||||
"and_N_more": "и еще {{count}}",
|
||||
"Audio": "Аудио"
|
||||
}
|
|
@ -528,7 +528,6 @@
|
|||
"Enter_workspace_URL": "Vnesite URL delovnega prostora",
|
||||
"Workspace_URL_Example": "Npr. your-company.rocket.chat",
|
||||
"Teams": "Ekipe",
|
||||
"No_team_channels_found": "Kanalov ni mogoče najti",
|
||||
"Team_not_found": "Ekipa ni bila najdena",
|
||||
"Create_Team": "Ustvari ekipo",
|
||||
"Team_Name": "Ime ekipe",
|
||||
|
@ -634,5 +633,6 @@
|
|||
"totp-invalid": "Koda ali geslo neveljavno",
|
||||
"Close_Chat": "Zaprite klepet",
|
||||
"Select_tags": "Izberite oznake",
|
||||
"and_N_more": "in še {{count}}"
|
||||
"and_N_more": "in še {{count}}",
|
||||
"Audio": "Zvok"
|
||||
}
|
|
@ -553,7 +553,6 @@
|
|||
"Enabled_E2E_Encryption_for_this_room": "aktivera E2E-kryptering för det här rummet",
|
||||
"Disabled_E2E_Encryption_for_this_room": "inaktivera E2E-kryptering för det här rummet",
|
||||
"Teams": "Team",
|
||||
"No_team_channels_found": "Inga kanaler hittades",
|
||||
"Team_not_found": "Teamet hittades inte",
|
||||
"Create_Team": "Skapa team",
|
||||
"Team_Name": "Teamnamn",
|
||||
|
@ -699,5 +698,6 @@
|
|||
"Reply_in_direct_message": "Svara med direktmeddelande",
|
||||
"room_archived": "arkiverade rum",
|
||||
"room_unarchived": "avarkiverade rum",
|
||||
"and_N_more": "och ytterligare {{count}}"
|
||||
"and_N_more": "och ytterligare {{count}}",
|
||||
"Audio": "Ljud"
|
||||
}
|
|
@ -504,5 +504,6 @@
|
|||
"Workspace_URL_Example": "Örn. sirketiniz.rocket.chat",
|
||||
"Open_Livechats": "Devam Eden Sohbetler",
|
||||
"Broadcast_hint": "Yalnızca yetkili kullanıcılar yeni ileti yazabilir, ancak diğer kullanıcılar yanıt verebilir",
|
||||
"and_N_more": "ve {{count}} daha"
|
||||
"and_N_more": "ve {{count}} daha",
|
||||
"Audio": "Ses"
|
||||
}
|
|
@ -482,5 +482,6 @@
|
|||
"Messagebox_Send_to_channel": "发送至频道",
|
||||
"Open_Livechats": "打开即时聊天",
|
||||
"Broadcast_hint": "只有经过授权的用户才能写新信息,但其他用户可以回复",
|
||||
"and_N_more": "另外{{count}}个"
|
||||
"and_N_more": "另外{{count}}个",
|
||||
"Audio": "音讯"
|
||||
}
|
|
@ -489,5 +489,6 @@
|
|||
"Confirmation": "確認",
|
||||
"Open_Livechats": "打開即時聊天",
|
||||
"Broadcast_hint": "只有經過授權的使用者才能發送新訊息,但其他使用者可以回覆",
|
||||
"and_N_more": "另外{{count}}個"
|
||||
"and_N_more": "另外{{count}}個",
|
||||
"Audio": "音訊"
|
||||
}
|
|
@ -142,4 +142,70 @@ export default class Subscription extends Model {
|
|||
@field('users_count') usersCount;
|
||||
|
||||
@json('source', sanitizer) source;
|
||||
|
||||
asPlain() {
|
||||
return {
|
||||
_id: this._id,
|
||||
f: this.f,
|
||||
t: this.t,
|
||||
ts: this.ts,
|
||||
ls: this.ls,
|
||||
name: this.name,
|
||||
fname: this.fname,
|
||||
sanitizedFname: this.sanitizedFname,
|
||||
rid: this.rid,
|
||||
open: this.open,
|
||||
alert: this.alert,
|
||||
roles: this.roles,
|
||||
unread: this.unread,
|
||||
userMentions: this.userMentions,
|
||||
groupMentions: this.groupMentions,
|
||||
tunread: this.tunread,
|
||||
tunreadUser: this.tunreadUser,
|
||||
tunreadGroup: this.tunreadGroup,
|
||||
roomUpdatedAt: this.roomUpdatedAt,
|
||||
ro: this.ro,
|
||||
lastOpen: this.lastOpen,
|
||||
description: this.description,
|
||||
announcement: this.announcement,
|
||||
bannerClosed: this.bannerClosed,
|
||||
topic: this.topic,
|
||||
blocked: this.blocked,
|
||||
blocker: this.blocker,
|
||||
reactWhenReadOnly: this.reactWhenReadOnly,
|
||||
archived: this.archived,
|
||||
joinCodeRequired: this.joinCodeRequired,
|
||||
notifications: this.notifications,
|
||||
muted: this.muted,
|
||||
ignored: this.ignored,
|
||||
broadcast: this.broadcast,
|
||||
prid: this.prid,
|
||||
draftMessage: this.draftMessage,
|
||||
lastThreadSync: this.lastThreadSync,
|
||||
jitsiTimeout: this.jitsiTimeout,
|
||||
autoTranslate: this.autoTranslate,
|
||||
autoTranslateLanguage: this.autoTranslateLanguage,
|
||||
lastMessage: this.lastMessage,
|
||||
hideUnreadStatus: this.hideUnreadStatus,
|
||||
hideMentionStatus: this.hideMentionStatus,
|
||||
sysMes: this.sysMes,
|
||||
uids: this.uids,
|
||||
usernames: this.usernames,
|
||||
visitor: this.visitor,
|
||||
departmentId: this.departmentId,
|
||||
servedBy: this.servedBy,
|
||||
livechatData: this.livechatData,
|
||||
tags: this.tags,
|
||||
E2EKey: this.E2EKey,
|
||||
E2ESuggestedKey: this.E2ESuggestedKey,
|
||||
encrypted: this.encrypted,
|
||||
e2eKeyId: this.e2eKeyId,
|
||||
avatarETag: this.avatarETag,
|
||||
teamId: this.teamId,
|
||||
teamMain: this.teamMain,
|
||||
onHold: this.onHold,
|
||||
usersCount: this.usersCount,
|
||||
source: this.source
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ import { Camera, CameraType } from 'expo-camera';
|
|||
import React, { useState } from 'react';
|
||||
import { StyleSheet, View } from 'react-native';
|
||||
import { useDispatch } from 'react-redux';
|
||||
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
||||
|
||||
import { useAppSelector } from '..';
|
||||
import { cancelCall, initVideoCall } from '../../../actions/videoConf';
|
||||
|
@ -19,6 +20,7 @@ export default function StartACallActionSheet({ rid }: { rid: string }): React.R
|
|||
const [mic, setMic] = useState(true);
|
||||
const [cam, setCam] = useState(false);
|
||||
const [containerWidth, setContainerWidth] = useState(0);
|
||||
const { bottom } = useSafeAreaInsets();
|
||||
|
||||
const username = useAppSelector(state => getUserSelector(state).username);
|
||||
const calling = useAppSelector(state => state.videoConf.calling);
|
||||
|
@ -36,7 +38,10 @@ export default function StartACallActionSheet({ rid }: { rid: string }): React.R
|
|||
);
|
||||
|
||||
return (
|
||||
<View style={style.actionSheetContainer} onLayout={e => setContainerWidth(e.nativeEvent.layout.width / 2)}>
|
||||
<View
|
||||
style={[style.actionSheetContainer, { paddingBottom: bottom }]}
|
||||
onLayout={e => setContainerWidth(e.nativeEvent.layout.width / 2)}
|
||||
>
|
||||
{calling ? <Ringer ringer={ERingerSounds.DIALTONE} /> : null}
|
||||
<CallHeader
|
||||
title={calling && user.direct ? i18n.t('Calling') : i18n.t('Start_a_call')}
|
||||
|
|
|
@ -41,7 +41,7 @@ export const getFilename = ({
|
|||
mimeType?: string;
|
||||
}) => {
|
||||
const isTitleTyped = mime.lookup(title);
|
||||
const extension = getExtension(type, mimeType);
|
||||
const extension = getExtension(type, mimeType, url);
|
||||
if (isTitleTyped && title) {
|
||||
if (isTitleTyped === mimeType) {
|
||||
return title;
|
||||
|
@ -65,18 +65,20 @@ export const getFilename = ({
|
|||
return `${filenameFromUrl}.${extension}`;
|
||||
};
|
||||
|
||||
const getExtension = (type: MediaTypes, mimeType?: string) => {
|
||||
const getExtension = (type: MediaTypes, mimeType?: string, url?: string) => {
|
||||
if (!mimeType) {
|
||||
return defaultType[type];
|
||||
}
|
||||
// support audio from older versions
|
||||
if (url?.split('.').pop() === 'm4a') {
|
||||
return 'm4a';
|
||||
}
|
||||
// The library is returning mpag instead of mp3 for audio/mpeg
|
||||
if (mimeType === 'audio/mpeg') {
|
||||
return 'mp3';
|
||||
}
|
||||
// Audios sent by Android devices are in the audio/aac format, which cannot be converted to mp3 by iOS.
|
||||
// However, both platforms support the m4a format, so they can maintain the same behavior.
|
||||
if (mimeType === 'audio/aac') {
|
||||
return 'm4a';
|
||||
return 'aac';
|
||||
}
|
||||
// The return of mime.extension('video/quicktime') is .qt,
|
||||
// this format the iOS isn't recognize and can't save on gallery
|
||||
|
|
|
@ -4,7 +4,7 @@ import { store as reduxStore } from '../../store/auxStore';
|
|||
import database from '../../database';
|
||||
|
||||
export function isGroupChat(room): boolean {
|
||||
return ((room.uids && room.uids.length > 2) || (room.usernames && room.usernames.length > 2)) ?? false;
|
||||
return ((room?.uids && room.uids.length > 2) || (room?.usernames && room.usernames.length > 2)) ?? false;
|
||||
}
|
||||
|
||||
export function getRoomAvatar(room) {
|
||||
|
@ -49,7 +49,7 @@ export function getRoomTitle(room) {
|
|||
if (allowSpecialChars && room.t !== 'd') {
|
||||
return room.fname || room.name;
|
||||
}
|
||||
return ((room.prid || useRealName) && room.fname) || room.name;
|
||||
return ((room?.prid || useRealName) && room?.fname) || room?.name;
|
||||
}
|
||||
|
||||
export function getSenderName(sender) {
|
||||
|
|
|
@ -107,12 +107,18 @@ export const search = async ({ text = '', filterUsers = true, filterRooms = true
|
|||
}
|
||||
|
||||
let localSearchData = [];
|
||||
// the users provided by localSearchUsersMessageByRid return the username properly, data.username
|
||||
// Example: Diego Mello's user -> {name: "Diego Mello", username: "diego.mello"}
|
||||
// Meanwhile, the username provided by localSearchSubscription is in name's property
|
||||
// Example: Diego Mello's subscription -> {fname: "Diego Mello", name: "diego.mello"}
|
||||
let usernames = [];
|
||||
if (rid) {
|
||||
localSearchData = await localSearchUsersMessageByRid({ text, rid });
|
||||
usernames = localSearchData.map(sub => sub.username as string);
|
||||
} else {
|
||||
localSearchData = await localSearchSubscription({ text, filterUsers, filterRooms });
|
||||
usernames = localSearchData.map(sub => sub.name as string);
|
||||
}
|
||||
const usernames = localSearchData.map(sub => sub.name as string);
|
||||
|
||||
const data: TSearch[] = localSearchData;
|
||||
|
||||
|
@ -126,7 +132,13 @@ export const search = async ({ text = '', filterUsers = true, filterRooms = true
|
|||
if (filterUsers) {
|
||||
users
|
||||
.filter((item1, index) => users.findIndex(item2 => item2._id === item1._id) === index) // Remove duplicated data from response
|
||||
.filter(user => !data.some(sub => user.username === sub.name)) // Make sure to remove users already on local database
|
||||
.filter(
|
||||
user =>
|
||||
!data.some(sub =>
|
||||
// Check comments at usernames' declaration
|
||||
rid && 'username' in sub ? user.username === sub.username : user.username === sub.name
|
||||
)
|
||||
) // Make sure to remove users already on local database
|
||||
.forEach(user => {
|
||||
data.push({
|
||||
...user,
|
||||
|
|
|
@ -98,7 +98,8 @@ const ChatsStackNavigator = () => {
|
|||
<ChatsStack.Screen name='RoomView' component={RoomView} />
|
||||
<ChatsStack.Screen name='RoomActionsView' component={RoomActionsView} options={RoomActionsView.navigationOptions} />
|
||||
<ChatsStack.Screen name='SelectListView' component={SelectListView} options={SelectListView.navigationOptions} />
|
||||
<ChatsStack.Screen name='RoomInfoView' component={RoomInfoView} options={RoomInfoView.navigationOptions} />
|
||||
<ChatsStack.Screen name='RoomInfoView' component={RoomInfoView} />
|
||||
{/* @ts-ignore */}
|
||||
<ChatsStack.Screen name='RoomInfoEditView' component={RoomInfoEditView} options={RoomInfoEditView.navigationOptions} />
|
||||
<ChatsStack.Screen name='ChangeAvatarView' component={ChangeAvatarView} />
|
||||
<ChatsStack.Screen name='RoomMembersView' component={RoomMembersView} />
|
||||
|
|
|
@ -115,7 +115,9 @@ const ModalStackNavigator = React.memo(({ navigation }: INavigation) => {
|
|||
screenOptions={{ ...defaultHeader, ...themedHeader(theme), ...StackAnimation } as StackNavigationOptions}
|
||||
>
|
||||
<ModalStack.Screen name='RoomActionsView' component={RoomActionsView} />
|
||||
<ModalStack.Screen name='RoomInfoView' component={RoomInfoView} options={RoomInfoView.navigationOptions} />
|
||||
{/* @ts-ignore */}
|
||||
<ModalStack.Screen name='RoomInfoView' component={RoomInfoView} />
|
||||
{/* @ts-ignore */}
|
||||
<ModalStack.Screen name='SelectListView' component={SelectListView} />
|
||||
<ModalStack.Screen name='RoomInfoEditView' component={RoomInfoEditView} options={RoomInfoEditView.navigationOptions} />
|
||||
<ModalStack.Screen name='ChangeAvatarView' component={ChangeAvatarView} />
|
||||
|
|
|
@ -1,105 +0,0 @@
|
|||
import { activateKeepAwake, deactivateKeepAwake } from 'expo-keep-awake';
|
||||
import React from 'react';
|
||||
import { BackHandler, Linking, NativeEventSubscription, SafeAreaView } from 'react-native';
|
||||
import WebView from 'react-native-webview';
|
||||
import { WebViewNavigation } from 'react-native-webview/lib/WebViewTypes';
|
||||
|
||||
import { IBaseScreen } from '../definitions';
|
||||
import { userAgent } from '../lib/constants';
|
||||
import { isIOS } from '../lib/methods/helpers';
|
||||
import { getRoomIdFromJitsiCallUrl } from '../lib/methods/helpers/getRoomIdFromJitsiCall';
|
||||
import { events, logEvent } from '../lib/methods/helpers/log';
|
||||
import { endVideoConfTimer, initVideoConfTimer } from '../lib/methods/videoConfTimer';
|
||||
import { ChatsStackParamList } from '../stacks/types';
|
||||
import { withTheme } from '../theme';
|
||||
|
||||
type TJitsiMeetViewProps = IBaseScreen<ChatsStackParamList, 'JitsiMeetView'>;
|
||||
|
||||
class JitsiMeetView extends React.Component<TJitsiMeetViewProps> {
|
||||
private rid: string;
|
||||
private url: string;
|
||||
private videoConf: boolean;
|
||||
private backHandler!: NativeEventSubscription;
|
||||
|
||||
constructor(props: TJitsiMeetViewProps) {
|
||||
super(props);
|
||||
this.rid = props.route.params?.rid;
|
||||
this.url = props.route.params?.url;
|
||||
this.videoConf = !!props.route.params?.videoConf;
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
this.handleJitsiApp();
|
||||
this.onConferenceJoined();
|
||||
activateKeepAwake();
|
||||
}
|
||||
|
||||
componentWillUnmount() {
|
||||
logEvent(this.videoConf ? events.LIVECHAT_VIDEOCONF_TERMINATE : events.JM_CONFERENCE_TERMINATE);
|
||||
if (!this.videoConf) {
|
||||
endVideoConfTimer();
|
||||
}
|
||||
if (this.backHandler) {
|
||||
this.backHandler.remove();
|
||||
}
|
||||
deactivateKeepAwake();
|
||||
}
|
||||
|
||||
handleJitsiApp = async () => {
|
||||
const { route, navigation } = this.props;
|
||||
const callUrl = route.params.url.replace(/^https?:\/\//, '');
|
||||
try {
|
||||
await Linking.openURL(`org.jitsi.meet://${callUrl}`);
|
||||
navigation.pop();
|
||||
} catch (error) {
|
||||
// As the jitsi app was not opened disable the backhandler on android
|
||||
this.backHandler = BackHandler.addEventListener('hardwareBackPress', () => true);
|
||||
}
|
||||
};
|
||||
|
||||
// Jitsi Update Timeout needs to be called every 10 seconds to make sure
|
||||
// call is not ended and is available to web users.
|
||||
onConferenceJoined = () => {
|
||||
logEvent(this.videoConf ? events.LIVECHAT_VIDEOCONF_JOIN : events.JM_CONFERENCE_JOIN);
|
||||
if (this.rid && !this.videoConf) {
|
||||
initVideoConfTimer(this.rid);
|
||||
}
|
||||
};
|
||||
|
||||
onNavigationStateChange = (webViewState: WebViewNavigation) => {
|
||||
const { navigation, route } = this.props;
|
||||
|
||||
const roomId = getRoomIdFromJitsiCallUrl(route.params.url);
|
||||
|
||||
if ((roomId && !webViewState.url.includes(roomId)) || webViewState.url.includes('close')) {
|
||||
if (isIOS) {
|
||||
if (webViewState.navigationType) {
|
||||
navigation.pop();
|
||||
}
|
||||
} else {
|
||||
navigation.pop();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
render() {
|
||||
const uri = `${this.url}${this.url.includes('#config') ? '&' : '#'}config.disableDeepLinking=true`;
|
||||
return (
|
||||
<SafeAreaView style={{ flex: 1 }}>
|
||||
<WebView
|
||||
source={{ uri: uri.replace(/"/g, "'") }}
|
||||
onNavigationStateChange={this.onNavigationStateChange}
|
||||
// Jitsi default background color
|
||||
style={{ flex: 1, backgroundColor: 'rgb(62,62,62)' }}
|
||||
userAgent={userAgent}
|
||||
javaScriptEnabled
|
||||
domStorageEnabled
|
||||
allowsInlineMediaPlayback
|
||||
mediaCapturePermissionGrantType={'grant'}
|
||||
/>
|
||||
</SafeAreaView>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export default withTheme(JitsiMeetView);
|
|
@ -0,0 +1,81 @@
|
|||
import { useNavigation } from '@react-navigation/native';
|
||||
import React from 'react';
|
||||
import { Linking, StyleSheet, Text, View } from 'react-native';
|
||||
import Modal from 'react-native-modal';
|
||||
|
||||
import sharedStyles from '../Styles';
|
||||
import Button from '../../containers/Button';
|
||||
import { useTheme } from '../../theme';
|
||||
import { useAppSelector } from '../../lib/hooks';
|
||||
import { getUserSelector } from '../../selectors/login';
|
||||
import i18n from '../../i18n';
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
title: {
|
||||
...sharedStyles.textBold,
|
||||
fontSize: 24,
|
||||
marginBottom: 24
|
||||
},
|
||||
regular: {
|
||||
...sharedStyles.textRegular,
|
||||
fontSize: 16,
|
||||
marginBottom: 24
|
||||
},
|
||||
min: {
|
||||
...sharedStyles.textRegular,
|
||||
fontSize: 12,
|
||||
marginBottom: 24
|
||||
},
|
||||
container: { padding: 24, borderRadius: 8 },
|
||||
buttonContainer: {
|
||||
flexDirection: 'row',
|
||||
justifyContent: 'space-between'
|
||||
}
|
||||
});
|
||||
|
||||
const JitsiAuthModal = ({
|
||||
setAuthModal,
|
||||
callUrl
|
||||
}: {
|
||||
setAuthModal: React.Dispatch<React.SetStateAction<boolean>>;
|
||||
callUrl: string;
|
||||
}): React.ReactElement => {
|
||||
const { goBack } = useNavigation();
|
||||
const { colors } = useTheme();
|
||||
const user = useAppSelector(state => getUserSelector(state));
|
||||
|
||||
const isAdmin = !!user.roles?.includes('admin');
|
||||
|
||||
return (
|
||||
<Modal isVisible>
|
||||
<View style={[styles.container, { backgroundColor: colors.backgroundColor }]}>
|
||||
<Text style={[styles.title, { color: colors.titleText }]}>{i18n.t('Jitsi_may_require_authentication')}</Text>
|
||||
{isAdmin ? (
|
||||
<Text style={[styles.regular, { color: colors.titleText }]}>
|
||||
{i18n.t('Jitsi_authentication_before_making_calls_admin')}
|
||||
</Text>
|
||||
) : (
|
||||
<Text style={[styles.regular, { color: colors.titleText }]}>{i18n.t('Jitsi_authentication_before_making_calls')}</Text>
|
||||
)}
|
||||
{!isAdmin ? (
|
||||
<Text style={[styles.min, { color: colors.auxiliaryText }]}>
|
||||
{i18n.t('Jitsi_authentication_before_making_calls_ask_admin')}
|
||||
</Text>
|
||||
) : null}
|
||||
<View style={styles.buttonContainer}>
|
||||
<Button title={i18n.t('Cancel')} type='secondary' onPress={() => setAuthModal(false)} />
|
||||
<Button
|
||||
title={i18n.t('Continue')}
|
||||
onPress={() => {
|
||||
setAuthModal(false);
|
||||
goBack();
|
||||
Linking.openURL(callUrl);
|
||||
}}
|
||||
/>
|
||||
</View>
|
||||
</View>
|
||||
</Modal>
|
||||
);
|
||||
};
|
||||
|
||||
export default JitsiAuthModal;
|
|
@ -0,0 +1,94 @@
|
|||
import { RouteProp, useNavigation, useRoute } from '@react-navigation/native';
|
||||
import { activateKeepAwake, deactivateKeepAwake } from 'expo-keep-awake';
|
||||
import React, { useCallback, useEffect, useState } from 'react';
|
||||
import { BackHandler, Linking, SafeAreaView } from 'react-native';
|
||||
import WebView from 'react-native-webview';
|
||||
|
||||
import { userAgent } from '../../lib/constants';
|
||||
import { isIOS } from '../../lib/methods/helpers';
|
||||
import { getRoomIdFromJitsiCallUrl } from '../../lib/methods/helpers/getRoomIdFromJitsiCall';
|
||||
import { events, logEvent } from '../../lib/methods/helpers/log';
|
||||
import { endVideoConfTimer, initVideoConfTimer } from '../../lib/methods/videoConfTimer';
|
||||
import { ChatsStackParamList } from '../../stacks/types';
|
||||
import JitsiAuthModal from './JitsiAuthModal';
|
||||
|
||||
const JitsiMeetView = (): React.ReactElement => {
|
||||
const {
|
||||
params: { rid, url, videoConf }
|
||||
} = useRoute<RouteProp<ChatsStackParamList, 'JitsiMeetView'>>();
|
||||
const { goBack } = useNavigation();
|
||||
|
||||
const [authModal, setAuthModal] = useState(false);
|
||||
|
||||
const handleJitsiApp = useCallback(async () => {
|
||||
const callUrl = url.replace(/^https?:\/\//, '');
|
||||
try {
|
||||
await Linking.openURL(`org.jitsi.meet://${callUrl}`);
|
||||
goBack();
|
||||
} catch (error) {
|
||||
// As the jitsi app was not opened, disable the backhandler on android
|
||||
BackHandler.addEventListener('hardwareBackPress', () => true);
|
||||
}
|
||||
}, [goBack, url]);
|
||||
|
||||
const onConferenceJoined = useCallback(() => {
|
||||
logEvent(videoConf ? events.LIVECHAT_VIDEOCONF_JOIN : events.JM_CONFERENCE_JOIN);
|
||||
if (rid && !videoConf) {
|
||||
initVideoConfTimer(rid);
|
||||
}
|
||||
}, [rid, videoConf]);
|
||||
|
||||
const onNavigationStateChange = useCallback(
|
||||
webViewState => {
|
||||
const roomId = getRoomIdFromJitsiCallUrl(url);
|
||||
if (webViewState.url.includes('auth-static')) {
|
||||
setAuthModal(true);
|
||||
return false;
|
||||
}
|
||||
if ((roomId && !webViewState.url.includes(roomId)) || webViewState.url.includes('close')) {
|
||||
if (isIOS) {
|
||||
if (webViewState.navigationType) {
|
||||
goBack();
|
||||
}
|
||||
} else {
|
||||
goBack();
|
||||
}
|
||||
}
|
||||
return true;
|
||||
},
|
||||
[goBack, url]
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
handleJitsiApp();
|
||||
onConferenceJoined();
|
||||
activateKeepAwake();
|
||||
|
||||
return () => {
|
||||
logEvent(videoConf ? events.LIVECHAT_VIDEOCONF_TERMINATE : events.JM_CONFERENCE_TERMINATE);
|
||||
if (!videoConf) endVideoConfTimer();
|
||||
deactivateKeepAwake();
|
||||
};
|
||||
}, [handleJitsiApp, onConferenceJoined, videoConf]);
|
||||
|
||||
const callUrl = `${url}${url.includes('#config') ? '&' : '#'}config.disableDeepLinking=true`;
|
||||
|
||||
return (
|
||||
<SafeAreaView style={{ flex: 1 }}>
|
||||
{authModal && <JitsiAuthModal setAuthModal={setAuthModal} callUrl={callUrl} />}
|
||||
<WebView
|
||||
source={{ uri: callUrl.replace(/"/g, "'") }}
|
||||
onNavigationStateChange={onNavigationStateChange}
|
||||
onShouldStartLoadWithRequest={onNavigationStateChange}
|
||||
style={{ flex: 1, backgroundColor: 'rgb(62,62,62)' }}
|
||||
userAgent={userAgent}
|
||||
javaScriptEnabled
|
||||
domStorageEnabled
|
||||
allowsInlineMediaPlayback
|
||||
mediaCapturePermissionGrantType={'grant'}
|
||||
/>
|
||||
</SafeAreaView>
|
||||
);
|
||||
};
|
||||
|
||||
export default JitsiMeetView;
|
|
@ -773,9 +773,9 @@ class RoomActionsView extends React.Component<IRoomActionsViewProps, IRoomAction
|
|||
params: {
|
||||
rid,
|
||||
t,
|
||||
room,
|
||||
room: room.asPlain ? room.asPlain() : room,
|
||||
member,
|
||||
fromRid: room.rid
|
||||
fromRid: room?.rid
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
|
@ -4,30 +4,17 @@ import I18n from '../../i18n';
|
|||
import { ISubscription } from '../../definitions';
|
||||
import Item from './Item';
|
||||
|
||||
const Channel = ({ room }: { room: ISubscription }) => {
|
||||
const { description, topic, announcement } = room;
|
||||
const Channel = ({ room }: { room?: ISubscription }): React.ReactElement => {
|
||||
const description = room?.description || `__${I18n.t('No_label_provided', { label: 'description' })}__`;
|
||||
const topic = room?.topic || `__${I18n.t('No_label_provided', { label: 'topic' })}__`;
|
||||
const announcement = room?.announcement || `__${I18n.t('No_label_provided', { label: 'announcement' })}__`;
|
||||
const broadcast = room?.broadcast ? I18n.t('Broadcast_hint') : '';
|
||||
return (
|
||||
<>
|
||||
<Item
|
||||
label={I18n.t('Description')}
|
||||
content={description || `__${I18n.t('No_label_provided', { label: 'description' })}__`}
|
||||
testID='room-info-view-description'
|
||||
/>
|
||||
<Item
|
||||
label={I18n.t('Topic')}
|
||||
content={topic || `__${I18n.t('No_label_provided', { label: 'topic' })}__`}
|
||||
testID='room-info-view-topic'
|
||||
/>
|
||||
<Item
|
||||
label={I18n.t('Announcement')}
|
||||
content={announcement || `__${I18n.t('No_label_provided', { label: 'announcement' })}__`}
|
||||
testID='room-info-view-announcement'
|
||||
/>
|
||||
<Item
|
||||
label={I18n.t('Broadcast')}
|
||||
content={room.broadcast ? I18n.t('Broadcast_hint') : ''}
|
||||
testID='room-info-view-broadcast'
|
||||
/>
|
||||
<Item label={I18n.t('Description')} content={description} testID='room-info-view-description' />
|
||||
<Item label={I18n.t('Topic')} content={topic} testID='room-info-view-topic' />
|
||||
<Item label={I18n.t('Announcement')} content={announcement} testID='room-info-view-announcement' />
|
||||
<Item label={I18n.t('Broadcast')} content={broadcast} testID='room-info-view-broadcast' />
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
|
|
@ -2,14 +2,12 @@ import React from 'react';
|
|||
|
||||
import Item from './Item';
|
||||
|
||||
const CustomFields = ({ customFields }: { customFields?: { [key: string]: string } }) => {
|
||||
const CustomFields = ({ customFields }: { customFields?: { [key: string]: string } }): React.ReactElement | null => {
|
||||
if (customFields) {
|
||||
return (
|
||||
<>
|
||||
{Object.keys(customFields).map((title: string) => {
|
||||
if (!customFields[title]) {
|
||||
return null;
|
||||
}
|
||||
if (!customFields[title]) return null;
|
||||
return <Item label={title} content={customFields[title]} />;
|
||||
})}
|
||||
</>
|
||||
|
|
|
@ -1,29 +1,27 @@
|
|||
import React from 'react';
|
||||
import { Text, View } from 'react-native';
|
||||
|
||||
import { IUserParsed } from '.';
|
||||
import I18n from '../../i18n';
|
||||
import { useTheme } from '../../theme';
|
||||
import CustomFields from './CustomFields';
|
||||
import Timezone from './Timezone';
|
||||
import styles from './styles';
|
||||
import { IUser } from '../../definitions';
|
||||
|
||||
const Roles = ({ roles }: { roles?: string[] }) => {
|
||||
const { colors } = useTheme();
|
||||
|
||||
if (roles?.length) {
|
||||
return (
|
||||
<View style={styles.item}>
|
||||
<Text testID='user-roles' style={[styles.itemLabel, { color: colors.titleText }]}>
|
||||
{I18n.t('Roles')}
|
||||
</Text>
|
||||
<View style={styles.item} testID='user-roles'>
|
||||
<Text style={[styles.itemLabel, { color: colors.titleText }]}>{I18n.t('Roles')}</Text>
|
||||
<View style={styles.rolesContainer}>
|
||||
{roles.map(role =>
|
||||
role ? (
|
||||
<View
|
||||
testID={`user-role-${role.replace(/ /g, '-')}`}
|
||||
style={[styles.roleBadge, { backgroundColor: colors.chatComponentBackground }]}
|
||||
key={role}
|
||||
testID={`user-role-${role.replace(/ /g, '-')}`}
|
||||
>
|
||||
<Text style={[styles.role, { color: colors.titleText }]}>{role}</Text>
|
||||
</View>
|
||||
|
@ -37,9 +35,9 @@ const Roles = ({ roles }: { roles?: string[] }) => {
|
|||
return null;
|
||||
};
|
||||
|
||||
const Direct = ({ roomUser }: { roomUser: IUserParsed }): React.ReactElement => (
|
||||
const Direct = ({ roomUser }: { roomUser: IUser }): React.ReactElement => (
|
||||
<>
|
||||
<Roles roles={roomUser.parsedRoles} />
|
||||
<Roles roles={roomUser.roles} />
|
||||
<Timezone utcOffset={roomUser.utcOffset} />
|
||||
<CustomFields customFields={roomUser.customFields} />
|
||||
</>
|
||||
|
|
|
@ -2,7 +2,6 @@ import React from 'react';
|
|||
import { Text, View } from 'react-native';
|
||||
|
||||
import Markdown from '../../containers/markdown';
|
||||
import { themes } from '../../lib/constants';
|
||||
import { useTheme } from '../../theme';
|
||||
import styles from './styles';
|
||||
|
||||
|
@ -12,19 +11,17 @@ interface IItem {
|
|||
testID?: string;
|
||||
}
|
||||
|
||||
const Item = ({ label, content, testID }: IItem) => {
|
||||
const { theme } = useTheme();
|
||||
const Item = ({ label, content, testID }: IItem): React.ReactElement | null => {
|
||||
const { colors } = useTheme();
|
||||
|
||||
if (!content) {
|
||||
return null;
|
||||
}
|
||||
if (!content) return null;
|
||||
|
||||
return (
|
||||
<View style={styles.item} testID={testID}>
|
||||
<Text accessibilityLabel={label} style={[styles.itemLabel, { color: themes[theme].titleText }]}>
|
||||
<Text accessibilityLabel={label} style={[styles.itemLabel, { color: colors.titleText }]}>
|
||||
{label}
|
||||
</Text>
|
||||
<Markdown style={[styles.itemContent, { color: themes[theme].auxiliaryText }]} msg={content} theme={theme} />
|
||||
<Markdown style={[styles.itemContent, { color: colors.auxiliaryText }]} msg={content} />
|
||||
</View>
|
||||
);
|
||||
};
|
||||
|
|
|
@ -1,17 +1,16 @@
|
|||
import React, { useEffect, useState } from 'react';
|
||||
import { StyleSheet, Text } from 'react-native';
|
||||
|
||||
import { TSupportedThemes, useTheme } from '../../theme';
|
||||
import sharedStyles from '../Styles';
|
||||
import { themes } from '../../lib/constants';
|
||||
import I18n from '../../i18n';
|
||||
import { ISubscription } from '../../definitions';
|
||||
import { ILivechatVisitorModified } from './index';
|
||||
import { ILivechatDepartment } from '../../definitions/ILivechatDepartment';
|
||||
import { ILivechatVisitorModified } from '../../definitions/ILivechatVisitor';
|
||||
import I18n from '../../i18n';
|
||||
import { Services } from '../../lib/services';
|
||||
import { useTheme } from '../../theme';
|
||||
import sharedStyles from '../Styles';
|
||||
import CustomFields from './CustomFields';
|
||||
import Item from './Item';
|
||||
import Timezone from './Timezone';
|
||||
import { ILivechatDepartment } from '../../definitions/ILivechatDepartment';
|
||||
import { Services } from '../../lib/services';
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
title: {
|
||||
|
@ -21,13 +20,13 @@ const styles = StyleSheet.create({
|
|||
}
|
||||
});
|
||||
|
||||
const Title = ({ title, theme }: { title: string; theme: TSupportedThemes }) => (
|
||||
<Text style={[styles.title, { color: themes[theme].titleText }]}>{title}</Text>
|
||||
);
|
||||
const Title = ({ title }: { title: string }) => {
|
||||
const { colors } = useTheme();
|
||||
return <Text style={[styles.title, { color: colors.titleText }]}>{title}</Text>;
|
||||
};
|
||||
|
||||
const Livechat = ({ room, roomUser }: { room: ISubscription; roomUser: ILivechatVisitorModified }) => {
|
||||
const Livechat = ({ room, roomUser }: { room: ISubscription; roomUser: ILivechatVisitorModified }): React.ReactElement => {
|
||||
const [department, setDepartment] = useState<ILivechatDepartment>({} as ILivechatDepartment);
|
||||
const { theme } = useTheme();
|
||||
|
||||
const getDepartment = async (id: string) => {
|
||||
if (id) {
|
||||
|
@ -38,19 +37,16 @@ const Livechat = ({ room, roomUser }: { room: ISubscription; roomUser: ILivechat
|
|||
}
|
||||
};
|
||||
|
||||
const getRoom = () => {
|
||||
if (room.departmentId) {
|
||||
getDepartment(room.departmentId);
|
||||
}
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
const getRoom = () => {
|
||||
if (room.departmentId) getDepartment(room.departmentId);
|
||||
};
|
||||
getRoom();
|
||||
}, [room]);
|
||||
}, [room.departmentId]);
|
||||
|
||||
return (
|
||||
<>
|
||||
<Title title={I18n.t('User')} theme={theme} />
|
||||
<Title title={I18n.t('User')} />
|
||||
<Timezone utcOffset={roomUser.utc} />
|
||||
<Item label={I18n.t('Username')} content={roomUser.username} />
|
||||
<Item
|
||||
|
@ -65,7 +61,7 @@ const Livechat = ({ room, roomUser }: { room: ISubscription; roomUser: ILivechat
|
|||
<Item label={I18n.t('OS')} content={roomUser.os} />
|
||||
<Item label={I18n.t('Browser')} content={roomUser.browser} />
|
||||
<CustomFields customFields={roomUser.livechatData} />
|
||||
<Title title={I18n.t('Conversation')} theme={theme} />
|
||||
<Title title={I18n.t('Conversation')} />
|
||||
<Item label={I18n.t('Agent')} content={room.servedBy?.username} />
|
||||
{/* TODO: Will be deprecated */}
|
||||
{/* @ts-ignore */}
|
||||
|
|
|
@ -1,34 +1,18 @@
|
|||
import React from 'react';
|
||||
import { connect } from 'react-redux';
|
||||
import moment from 'moment';
|
||||
import React from 'react';
|
||||
|
||||
import { IApplicationState } from '../../definitions';
|
||||
import I18n from '../../i18n';
|
||||
import { useAppSelector } from '../../lib/hooks';
|
||||
import Item from './Item';
|
||||
import { TSettingsValues } from '../../reducers/settings';
|
||||
|
||||
interface ITimezone {
|
||||
utcOffset?: number;
|
||||
Message_TimeFormat?: TSettingsValues;
|
||||
}
|
||||
const Timezone = ({ utcOffset }: { utcOffset?: number }): React.ReactElement | null => {
|
||||
const Message_TimeFormat = useAppSelector(state => state.settings.Message_TimeFormat as string);
|
||||
|
||||
const Timezone = ({ utcOffset, Message_TimeFormat }: ITimezone) => {
|
||||
if (!utcOffset) {
|
||||
return null;
|
||||
}
|
||||
if (!utcOffset) return null;
|
||||
|
||||
return (
|
||||
<Item
|
||||
label={I18n.t('Timezone')}
|
||||
content={`${moment()
|
||||
.utcOffset(utcOffset)
|
||||
.format(Message_TimeFormat as string)} (UTC ${utcOffset})`}
|
||||
/>
|
||||
<Item label={I18n.t('Timezone')} content={`${moment().utcOffset(utcOffset).format(Message_TimeFormat)} (UTC ${utcOffset})`} />
|
||||
);
|
||||
};
|
||||
|
||||
const mapStateToProps = (state: IApplicationState) => ({
|
||||
Message_TimeFormat: state.settings.Message_TimeFormat
|
||||
});
|
||||
|
||||
export default connect(mapStateToProps)(Timezone);
|
||||
export default Timezone;
|
||||
|
|
|
@ -0,0 +1,110 @@
|
|||
import React from 'react';
|
||||
import { Text, View } from 'react-native';
|
||||
import { BorderlessButton } from 'react-native-gesture-handler';
|
||||
|
||||
import { CustomIcon, TIconsName } from '../../../containers/CustomIcon';
|
||||
import { ISubscription, SubscriptionType } from '../../../definitions';
|
||||
import i18n from '../../../i18n';
|
||||
import { useVideoConf } from '../../../lib/hooks/useVideoConf';
|
||||
import { useTheme } from '../../../theme';
|
||||
import styles from '../styles';
|
||||
|
||||
function BaseButton({
|
||||
danger,
|
||||
iconName,
|
||||
onPress,
|
||||
label,
|
||||
showIcon = true,
|
||||
enabled = true
|
||||
}: {
|
||||
danger?: boolean;
|
||||
iconName: TIconsName;
|
||||
onPress?: (prop: any) => void;
|
||||
label: string;
|
||||
showIcon?: boolean;
|
||||
enabled?: boolean;
|
||||
}): React.ReactElement | null {
|
||||
const { colors } = useTheme();
|
||||
const color = danger ? colors.dangerColor : colors.actionTintColor;
|
||||
|
||||
if (showIcon)
|
||||
return (
|
||||
<BorderlessButton enabled={enabled} testID={`room-info-view-${iconName}`} onPress={onPress} style={styles.roomButton}>
|
||||
<CustomIcon name={iconName} size={30} color={color} />
|
||||
<Text style={[styles.roomButtonText, { color }]}>{label}</Text>
|
||||
</BorderlessButton>
|
||||
);
|
||||
return null;
|
||||
}
|
||||
|
||||
function CallButton({ rid, roomFromRid }: { rid: string; isDirect: boolean; roomFromRid: boolean }): React.ReactElement | null {
|
||||
const { callEnabled, disabledTooltip, showInitCallActionSheet } = useVideoConf(rid);
|
||||
return (
|
||||
<BaseButton
|
||||
onPress={showInitCallActionSheet}
|
||||
iconName='phone'
|
||||
label={i18n.t('Call')}
|
||||
enabled={!disabledTooltip}
|
||||
showIcon={callEnabled && !roomFromRid}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
interface IRoomInfoButtons {
|
||||
rid: string;
|
||||
room: ISubscription | undefined;
|
||||
roomUserId?: string;
|
||||
isDirect: boolean;
|
||||
fromRid?: string;
|
||||
handleCreateDirectMessage: () => void;
|
||||
handleIgnoreUser: () => void;
|
||||
handleBlockUser: () => void;
|
||||
roomFromRid: ISubscription | undefined;
|
||||
}
|
||||
|
||||
export const RoomInfoButtons = ({
|
||||
rid,
|
||||
room: roomFromProps,
|
||||
roomUserId,
|
||||
isDirect,
|
||||
fromRid,
|
||||
handleCreateDirectMessage,
|
||||
handleIgnoreUser,
|
||||
handleBlockUser,
|
||||
roomFromRid
|
||||
}: IRoomInfoButtons): React.ReactElement => {
|
||||
const room = roomFromRid || roomFromProps;
|
||||
// Following the web behavior, when is a DM with myself, shouldn't appear block or ignore option
|
||||
const isDmWithMyself = room?.uids && room.uids?.filter((uid: string) => uid !== roomUserId).length === 0;
|
||||
|
||||
const isFromDm = room?.t === SubscriptionType.DIRECT;
|
||||
const isDirectFromSaved = isDirect && fromRid && room;
|
||||
const isIgnored = room?.ignored?.includes?.(roomUserId || '');
|
||||
const isBlocked = room?.blocker;
|
||||
|
||||
const renderIgnoreUser = isDirectFromSaved && !isFromDm && !isDmWithMyself;
|
||||
const renderBlockUser = isDirectFromSaved && isFromDm;
|
||||
|
||||
return (
|
||||
<View style={styles.roomButtonsContainer}>
|
||||
<BaseButton onPress={handleCreateDirectMessage} label={i18n.t('Message')} iconName='message' />
|
||||
<CallButton isDirect={isDirect} rid={rid} roomFromRid={!!roomFromRid} />
|
||||
<BaseButton
|
||||
onPress={handleIgnoreUser}
|
||||
label={i18n.t(isIgnored ? 'Unignore' : 'Ignore')}
|
||||
iconName='ignore'
|
||||
showIcon={!!renderIgnoreUser}
|
||||
danger
|
||||
/>
|
||||
<BaseButton
|
||||
onPress={handleBlockUser}
|
||||
label={i18n.t(`${isBlocked ? 'Unblock' : 'Block'}_user`)}
|
||||
iconName='ignore'
|
||||
showIcon={!!renderBlockUser}
|
||||
danger
|
||||
/>
|
||||
</View>
|
||||
);
|
||||
};
|
||||
|
||||
export default RoomInfoButtons;
|
|
@ -0,0 +1,47 @@
|
|||
import React from 'react';
|
||||
import { View } from 'react-native';
|
||||
|
||||
import { AvatarWithEdit } from '../../../containers/Avatar';
|
||||
import Status from '../../../containers/Status';
|
||||
import { SubscriptionType } from '../../../definitions';
|
||||
import { useTheme } from '../../../theme';
|
||||
import sharedStyles from '../../Styles';
|
||||
import styles from '../styles';
|
||||
|
||||
const RoomInfoViewAvatar = ({
|
||||
showEdit,
|
||||
type,
|
||||
username,
|
||||
rid,
|
||||
handleEditAvatar,
|
||||
userId
|
||||
}: {
|
||||
showEdit: boolean;
|
||||
type: SubscriptionType;
|
||||
username: string;
|
||||
rid?: string;
|
||||
handleEditAvatar: () => void;
|
||||
userId: string;
|
||||
}): React.ReactElement => {
|
||||
const { colors } = useTheme();
|
||||
|
||||
const showAvatarEdit = showEdit && type !== SubscriptionType.OMNICHANNEL;
|
||||
|
||||
return (
|
||||
<AvatarWithEdit
|
||||
text={username}
|
||||
style={styles.avatar}
|
||||
type={type}
|
||||
rid={rid}
|
||||
handleEdit={showAvatarEdit ? handleEditAvatar : undefined}
|
||||
>
|
||||
{type === SubscriptionType.DIRECT && userId ? (
|
||||
<View style={[sharedStyles.status, { backgroundColor: colors.auxiliaryBackground }]}>
|
||||
<Status size={20} id={userId} />
|
||||
</View>
|
||||
) : null}
|
||||
</AvatarWithEdit>
|
||||
);
|
||||
};
|
||||
|
||||
export default RoomInfoViewAvatar;
|
|
@ -0,0 +1,29 @@
|
|||
import React from 'react';
|
||||
|
||||
import { ISubscription, SubscriptionType, IUser } from '../../../definitions';
|
||||
import { ILivechatVisitorModified } from '../../../definitions/ILivechatVisitor';
|
||||
import Channel from '../Channel';
|
||||
import Direct from '../Direct';
|
||||
import Livechat from '../Livechat';
|
||||
|
||||
const RoomInfoViewBody = ({
|
||||
isDirect,
|
||||
roomUser,
|
||||
room
|
||||
}: {
|
||||
isDirect: boolean;
|
||||
roomUser: IUser | ILivechatVisitorModified;
|
||||
room?: ISubscription;
|
||||
}): React.ReactElement => {
|
||||
if (isDirect) {
|
||||
return <Direct roomUser={roomUser as IUser} />;
|
||||
}
|
||||
|
||||
if (room?.t === SubscriptionType.OMNICHANNEL && room) {
|
||||
return <Livechat room={room} roomUser={roomUser as ILivechatVisitorModified} />;
|
||||
}
|
||||
|
||||
return <Channel room={room} />;
|
||||
};
|
||||
|
||||
export default RoomInfoViewBody;
|
|
@ -0,0 +1,57 @@
|
|||
import React from 'react';
|
||||
import { Text, View } from 'react-native';
|
||||
|
||||
import { ISubscription, SubscriptionType } from '../../../definitions';
|
||||
import styles from '../styles';
|
||||
import { useTheme } from '../../../theme';
|
||||
import { MarkdownPreview } from '../../../containers/markdown';
|
||||
import RoomTypeIcon from '../../../containers/RoomTypeIcon';
|
||||
import { getRoomTitle } from '../../../lib/methods/helpers';
|
||||
|
||||
interface IRoomInfoViewTitle {
|
||||
room?: ISubscription;
|
||||
name?: string;
|
||||
username: string;
|
||||
statusText?: string;
|
||||
type: SubscriptionType;
|
||||
}
|
||||
|
||||
const RoomInfoViewTitle = ({ room, name, username, statusText, type }: IRoomInfoViewTitle): React.ReactElement => {
|
||||
const { colors } = useTheme();
|
||||
if (type === SubscriptionType.DIRECT) {
|
||||
return (
|
||||
<>
|
||||
<Text testID='room-info-view-name' style={[styles.roomTitle, { color: colors.titleText }]}>
|
||||
{name}
|
||||
</Text>
|
||||
{username && (
|
||||
<Text
|
||||
testID='room-info-view-username'
|
||||
style={[styles.roomUsername, { color: colors.auxiliaryText }]}
|
||||
>{`@${username}`}</Text>
|
||||
)}
|
||||
{!!statusText && (
|
||||
<View testID='room-info-view-custom-status'>
|
||||
<MarkdownPreview msg={statusText} style={[styles.roomUsername, { color: colors.auxiliaryText }]} />
|
||||
</View>
|
||||
)}
|
||||
</>
|
||||
);
|
||||
}
|
||||
return (
|
||||
<View style={styles.roomTitleContainer}>
|
||||
<RoomTypeIcon
|
||||
type={room?.prid ? 'discussion' : type}
|
||||
teamMain={room?.teamMain}
|
||||
key='room-info-type'
|
||||
status={room?.visitor?.status}
|
||||
sourceType={room?.source}
|
||||
/>
|
||||
<Text testID='room-info-view-name' style={[styles.roomTitle, { color: colors.titleText }]} key='room-info-name'>
|
||||
{getRoomTitle(room)}
|
||||
</Text>
|
||||
</View>
|
||||
);
|
||||
};
|
||||
|
||||
export default RoomInfoViewTitle;
|
|
@ -1,58 +0,0 @@
|
|||
import React from 'react';
|
||||
import { Text } from 'react-native';
|
||||
import { BorderlessButton } from 'react-native-gesture-handler';
|
||||
|
||||
import { CustomIcon, TIconsName } from '../../../containers/CustomIcon';
|
||||
import styles from '../styles';
|
||||
import { useTheme } from '../../../theme';
|
||||
import { useVideoConf } from '../../../lib/hooks/useVideoConf';
|
||||
import i18n from '../../../i18n';
|
||||
import { useAppSelector } from '../../../lib/hooks';
|
||||
import { compareServerVersion } from '../../../lib/methods/helpers';
|
||||
|
||||
// TODO: change other icons on future
|
||||
function UserInfoButton({
|
||||
danger,
|
||||
iconName,
|
||||
onPress,
|
||||
label,
|
||||
showIcon,
|
||||
enabled = true
|
||||
}: {
|
||||
danger?: boolean;
|
||||
iconName: TIconsName;
|
||||
onPress?: (prop: any) => void;
|
||||
label: string;
|
||||
showIcon?: boolean;
|
||||
enabled?: boolean;
|
||||
}): React.ReactElement | null {
|
||||
const { colors } = useTheme();
|
||||
let color = danger ? colors.dangerColor : colors.actionTintColor;
|
||||
if (!enabled) color = colors.auxiliaryText;
|
||||
if (showIcon)
|
||||
return (
|
||||
<BorderlessButton enabled={enabled} testID={`room-info-view-${iconName}`} onPress={onPress} style={styles.roomButton}>
|
||||
<CustomIcon name={iconName} size={30} color={color} />
|
||||
<Text style={[styles.roomButtonText, { color }]}>{label}</Text>
|
||||
</BorderlessButton>
|
||||
);
|
||||
return null;
|
||||
}
|
||||
|
||||
export function CallButton({ rid, isDirect }: { rid: string; isDirect: boolean }): React.ReactElement | null {
|
||||
const { callEnabled, showInitCallActionSheet, disabledTooltip } = useVideoConf(rid);
|
||||
const serverVersion = useAppSelector(state => state.server.version);
|
||||
const greaterThanFive = compareServerVersion(serverVersion, 'greaterThanOrEqualTo', '5.0.0');
|
||||
|
||||
const showIcon = greaterThanFive ? callEnabled : callEnabled && isDirect;
|
||||
|
||||
return (
|
||||
<UserInfoButton
|
||||
enabled={!disabledTooltip}
|
||||
onPress={showInitCallActionSheet}
|
||||
iconName='phone'
|
||||
label={i18n.t('Call')}
|
||||
showIcon={showIcon}
|
||||
/>
|
||||
);
|
||||
}
|
|
@ -1,226 +1,124 @@
|
|||
import { CompositeNavigationProp, RouteProp } from '@react-navigation/native';
|
||||
import { CompositeNavigationProp, RouteProp, useNavigation, useRoute } from '@react-navigation/native';
|
||||
import { StackNavigationProp } from '@react-navigation/stack';
|
||||
import { uniq } from 'lodash';
|
||||
import isEmpty from 'lodash/isEmpty';
|
||||
import React from 'react';
|
||||
import { ScrollView, Text, View } from 'react-native';
|
||||
import { BorderlessButton } from 'react-native-gesture-handler';
|
||||
import { connect } from 'react-redux';
|
||||
import { Observable, Subscription } from 'rxjs';
|
||||
import React, { useEffect, useRef, useState } from 'react';
|
||||
import { ScrollView, View } from 'react-native';
|
||||
import { Subscription } from 'rxjs';
|
||||
import UAParser from 'ua-parser-js';
|
||||
|
||||
import { AvatarWithEdit } from '../../containers/Avatar';
|
||||
import { CustomIcon, TIconsName } from '../../containers/CustomIcon';
|
||||
import * as HeaderButton from '../../containers/HeaderButton';
|
||||
import RoomTypeIcon from '../../containers/RoomTypeIcon';
|
||||
import SafeAreaView from '../../containers/SafeAreaView';
|
||||
import Status from '../../containers/Status';
|
||||
import StatusBar from '../../containers/StatusBar';
|
||||
import { LISTENER } from '../../containers/Toast';
|
||||
import { MarkdownPreview } from '../../containers/markdown';
|
||||
import { IApplicationState, ISubscription, IUser, SubscriptionType, TSubscriptionModel } from '../../definitions';
|
||||
import { ILivechatVisitor } from '../../definitions/ILivechatVisitor';
|
||||
import { ISubscription, IUser, SubscriptionType } from '../../definitions';
|
||||
import I18n from '../../i18n';
|
||||
import { themes } from '../../lib/constants';
|
||||
import { getSubscriptionByRoomId } from '../../lib/database/services/Subscription';
|
||||
import { useAppSelector } from '../../lib/hooks';
|
||||
import { getRoomTitle, getUidDirectMessage, hasPermission } from '../../lib/methods/helpers';
|
||||
import EventEmitter from '../../lib/methods/helpers/events';
|
||||
import { goRoom } from '../../lib/methods/helpers/goRoom';
|
||||
import { handleIgnore } from '../../lib/methods/helpers/handleIgnore';
|
||||
import log, { events, logEvent } from '../../lib/methods/helpers/log';
|
||||
import Navigation from '../../lib/navigation/appNavigation';
|
||||
import { Services } from '../../lib/services';
|
||||
import { TUsersRoles } from '../../reducers/usersRoles';
|
||||
import { MasterDetailInsideStackParamList } from '../../stacks/MasterDetailStack/types';
|
||||
import { ChatsStackParamList } from '../../stacks/types';
|
||||
import { TSupportedThemes, withTheme } from '../../theme';
|
||||
import sharedStyles from '../Styles';
|
||||
import Channel from './Channel';
|
||||
import Direct from './Direct';
|
||||
import Livechat from './Livechat';
|
||||
import { CallButton } from './components/UserInfoButton';
|
||||
import { useTheme } from '../../theme';
|
||||
import RoomInfoButtons from './components/RoomInfoButtons';
|
||||
import RoomInfoViewAvatar from './components/RoomInfoViewAvatar';
|
||||
import RoomInfoViewBody from './components/RoomInfoViewBody';
|
||||
import RoomInfoViewTitle from './components/RoomInfoViewTitle';
|
||||
import styles from './styles';
|
||||
|
||||
interface IGetRoomTitle {
|
||||
room: ISubscription;
|
||||
type: SubscriptionType;
|
||||
name?: string;
|
||||
username: string;
|
||||
statusText?: string;
|
||||
theme: TSupportedThemes;
|
||||
}
|
||||
type TRoomInfoViewNavigationProp = CompositeNavigationProp<
|
||||
StackNavigationProp<ChatsStackParamList, 'RoomInfoView'>,
|
||||
StackNavigationProp<MasterDetailInsideStackParamList>
|
||||
>;
|
||||
|
||||
const renderRoomTitle = ({ room, type, name, username, statusText, theme }: IGetRoomTitle) =>
|
||||
type === SubscriptionType.DIRECT ? (
|
||||
<>
|
||||
<Text testID='room-info-view-name' style={[styles.roomTitle, { color: themes[theme].titleText }]}>
|
||||
{name}
|
||||
</Text>
|
||||
{username && (
|
||||
<Text
|
||||
testID='room-info-view-username'
|
||||
style={[styles.roomUsername, { color: themes[theme].auxiliaryText }]}
|
||||
>{`@${username}`}</Text>
|
||||
)}
|
||||
{!!statusText && (
|
||||
<View testID='room-info-view-custom-status'>
|
||||
<MarkdownPreview msg={statusText} style={[styles.roomUsername, { color: themes[theme].auxiliaryText }]} />
|
||||
</View>
|
||||
)}
|
||||
</>
|
||||
) : (
|
||||
<View style={styles.roomTitleRow}>
|
||||
<RoomTypeIcon
|
||||
type={room.prid ? 'discussion' : room.t}
|
||||
teamMain={room.teamMain}
|
||||
key='room-info-type'
|
||||
status={room.visitor?.status}
|
||||
sourceType={room.source}
|
||||
/>
|
||||
<Text testID='room-info-view-name' style={[styles.roomTitle, { color: themes[theme].titleText }]} key='room-info-name'>
|
||||
{getRoomTitle(room)}
|
||||
</Text>
|
||||
</View>
|
||||
type TRoomInfoViewRouteProp = RouteProp<ChatsStackParamList, 'RoomInfoView'>;
|
||||
|
||||
const RoomInfoView = (): React.ReactElement => {
|
||||
const {
|
||||
params: { rid, t, fromRid, member, room: roomParam, showCloseModal }
|
||||
} = useRoute<TRoomInfoViewRouteProp>();
|
||||
const { addListener, setOptions, navigate, goBack } = useNavigation<TRoomInfoViewNavigationProp>();
|
||||
|
||||
const [room, setRoom] = useState(roomParam);
|
||||
const [roomFromRid, setRoomFromRid] = useState<ISubscription | undefined>();
|
||||
const [roomUser, setRoomUser] = useState(member || {});
|
||||
const [showEdit, setShowEdit] = useState(false);
|
||||
|
||||
const roomType = room?.t || t;
|
||||
const isDirect = roomType === SubscriptionType.DIRECT;
|
||||
const isLivechat = roomType === SubscriptionType.OMNICHANNEL;
|
||||
|
||||
const subscription = useRef<Subscription | undefined>(undefined);
|
||||
|
||||
const {
|
||||
isMasterDetail,
|
||||
subscribedRoom,
|
||||
usersRoles,
|
||||
roles,
|
||||
// permissions
|
||||
editRoomPermission,
|
||||
editOmnichannelContact,
|
||||
editLivechatRoomCustomfields
|
||||
} = useAppSelector(state => ({
|
||||
subscribedRoom: state.room.subscribedRoom,
|
||||
isMasterDetail: state.app.isMasterDetail,
|
||||
roles: state.roles,
|
||||
usersRoles: state.usersRoles,
|
||||
// permissions
|
||||
editRoomPermission: state.permissions['edit-room'],
|
||||
editOmnichannelContact: state.permissions['edit-omnichannel-contact'],
|
||||
editLivechatRoomCustomfields: state.permissions['edit-livechat-room-customfields']
|
||||
}));
|
||||
|
||||
const { colors } = useTheme();
|
||||
|
||||
useEffect(() => {
|
||||
const listener = addListener('focus', () => (isLivechat ? loadVisitor() : null));
|
||||
return () => listener();
|
||||
}, []);
|
||||
|
||||
useEffect(
|
||||
() => () => {
|
||||
subscription.current?.unsubscribe();
|
||||
},
|
||||
[]
|
||||
);
|
||||
|
||||
interface IRoomInfoViewProps {
|
||||
navigation: CompositeNavigationProp<
|
||||
StackNavigationProp<ChatsStackParamList, 'RoomInfoView'>,
|
||||
StackNavigationProp<MasterDetailInsideStackParamList>
|
||||
>;
|
||||
route: RouteProp<ChatsStackParamList, 'RoomInfoView'>;
|
||||
subscribedRoom: string;
|
||||
theme: TSupportedThemes;
|
||||
isMasterDetail: boolean;
|
||||
jitsiEnabled: boolean;
|
||||
editRoomPermission?: string[];
|
||||
editOmnichannelContact?: string[];
|
||||
editLivechatRoomCustomfields?: string[];
|
||||
roles: { [key: string]: string };
|
||||
usersRoles: TUsersRoles;
|
||||
}
|
||||
useEffect(() => {
|
||||
loadRoom();
|
||||
if (isDirect) loadUser();
|
||||
}, []);
|
||||
|
||||
export interface IUserParsed extends IUser {
|
||||
parsedRoles?: string[];
|
||||
}
|
||||
|
||||
export interface ILivechatVisitorModified extends ILivechatVisitor {
|
||||
os?: string;
|
||||
browser?: string;
|
||||
}
|
||||
|
||||
interface IRoomInfoViewState {
|
||||
room: ISubscription;
|
||||
roomUser: IUserParsed | ILivechatVisitorModified;
|
||||
showEdit: boolean;
|
||||
roomFromRid?: TSubscriptionModel;
|
||||
}
|
||||
|
||||
class RoomInfoView extends React.Component<IRoomInfoViewProps, IRoomInfoViewState> {
|
||||
private rid: string;
|
||||
|
||||
private t: SubscriptionType;
|
||||
|
||||
private unsubscribeFocus?: () => void;
|
||||
|
||||
private subscription?: Subscription;
|
||||
|
||||
private roomObservable?: Observable<TSubscriptionModel>;
|
||||
|
||||
private fromRid?: string;
|
||||
|
||||
private subscriptionRoomFromRid?: Subscription;
|
||||
|
||||
constructor(props: IRoomInfoViewProps) {
|
||||
super(props);
|
||||
const room = props.route.params?.room;
|
||||
const roomUser = props.route.params?.member;
|
||||
this.rid = props.route.params?.rid;
|
||||
this.t = props.route.params?.t;
|
||||
this.fromRid = props.route.params?.fromRid;
|
||||
this.state = {
|
||||
room: (room || { rid: this.rid, t: this.t }) as any,
|
||||
roomUser: roomUser || {},
|
||||
showEdit: false,
|
||||
roomFromRid: undefined
|
||||
};
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
if (this.isDirect) {
|
||||
this.loadUser();
|
||||
this.loadRoomFromRid();
|
||||
} else {
|
||||
this.loadRoom();
|
||||
}
|
||||
this.setHeader();
|
||||
|
||||
const { navigation } = this.props;
|
||||
this.unsubscribeFocus = navigation.addListener('focus', () => {
|
||||
if (this.isLivechat) {
|
||||
this.loadVisitor();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
componentWillUnmount() {
|
||||
if (this.subscription && this.subscription.unsubscribe) {
|
||||
this.subscription.unsubscribe();
|
||||
}
|
||||
if (this.subscriptionRoomFromRid && this.subscriptionRoomFromRid.unsubscribe) {
|
||||
this.subscriptionRoomFromRid.unsubscribe();
|
||||
}
|
||||
if (this.unsubscribeFocus) {
|
||||
this.unsubscribeFocus();
|
||||
}
|
||||
}
|
||||
|
||||
setHeader = () => {
|
||||
const { roomUser, room, showEdit } = this.state;
|
||||
const { navigation, route } = this.props;
|
||||
const t = route.params?.t;
|
||||
const rid = route.params?.rid;
|
||||
const showCloseModal = route.params?.showCloseModal;
|
||||
navigation.setOptions({
|
||||
headerLeft: showCloseModal ? () => <HeaderButton.CloseModal navigation={navigation} /> : undefined,
|
||||
title: t === SubscriptionType.DIRECT ? I18n.t('User_Info') : I18n.t('Room_Info'),
|
||||
headerRight: showEdit
|
||||
? () => (
|
||||
<HeaderButton.Container>
|
||||
<HeaderButton.Item
|
||||
iconName='edit'
|
||||
onPress={() => {
|
||||
const isLivechat = t === SubscriptionType.OMNICHANNEL;
|
||||
logEvent(events[`RI_GO_${isLivechat ? 'LIVECHAT' : 'RI'}_EDIT`]);
|
||||
navigation.navigate(isLivechat ? 'LivechatEditView' : 'RoomInfoEditView', { rid, room, roomUser });
|
||||
}}
|
||||
testID='room-info-view-edit-button'
|
||||
/>
|
||||
</HeaderButton.Container>
|
||||
)
|
||||
: undefined
|
||||
const setHeader = (canEdit?: boolean) => {
|
||||
const HeaderRight = () => (
|
||||
<HeaderButton.Container>
|
||||
<HeaderButton.Item
|
||||
iconName='edit'
|
||||
onPress={() => {
|
||||
if (!room) return;
|
||||
logEvent(events[`RI_GO_${isLivechat ? 'LIVECHAT' : 'RI'}_EDIT`]);
|
||||
const navigationProps = { room, roomUser };
|
||||
if (isLivechat) navigate('LivechatEditView', navigationProps);
|
||||
else navigate('RoomInfoEditView', { rid, ...navigationProps });
|
||||
}}
|
||||
testID='room-info-view-edit-button'
|
||||
/>
|
||||
</HeaderButton.Container>
|
||||
);
|
||||
setOptions({
|
||||
headerLeft: showCloseModal ? () => <HeaderButton.CloseModal /> : undefined,
|
||||
title: isDirect ? I18n.t('User_Info') : I18n.t('Room_Info'),
|
||||
headerRight: canEdit ? () => <HeaderRight /> : undefined
|
||||
});
|
||||
};
|
||||
|
||||
get isDirect() {
|
||||
const { room } = this.state;
|
||||
return room.t === SubscriptionType.DIRECT;
|
||||
}
|
||||
|
||||
get isLivechat() {
|
||||
const { room } = this.state;
|
||||
return room.t === SubscriptionType.OMNICHANNEL;
|
||||
}
|
||||
|
||||
getRoleDescription = (id: string) => {
|
||||
const { roles } = this.props;
|
||||
return roles[id];
|
||||
};
|
||||
|
||||
loadVisitor = async () => {
|
||||
const { room } = this.state;
|
||||
const loadVisitor = async () => {
|
||||
try {
|
||||
if (room.visitor?._id) {
|
||||
if (room?.visitor?._id) {
|
||||
const result = await Services.getVisitorInfo(room.visitor._id);
|
||||
if (result.success) {
|
||||
const { visitor } = result;
|
||||
|
@ -231,7 +129,8 @@ class RoomInfoView extends React.Component<IRoomInfoViewProps, IRoomInfoViewStat
|
|||
params.os = `${ua.getOS().name} ${ua.getOS().version}`;
|
||||
params.browser = `${ua.getBrowser().name} ${ua.getBrowser().version}`;
|
||||
}
|
||||
this.setState({ roomUser: { ...visitor, ...params } as ILivechatVisitorModified }, () => this.setHeader());
|
||||
setRoomUser({ ...visitor, ...params });
|
||||
setHeader();
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
|
@ -239,150 +138,116 @@ class RoomInfoView extends React.Component<IRoomInfoViewProps, IRoomInfoViewStat
|
|||
}
|
||||
};
|
||||
|
||||
parseRoles = (roleArray: string[]) =>
|
||||
Promise.all(
|
||||
roleArray.map(async role => {
|
||||
const description = await this.getRoleDescription(role);
|
||||
return description;
|
||||
})
|
||||
);
|
||||
const parseRoles = (roleArray: string[]) => roleArray.map(role => roles[role]);
|
||||
|
||||
setUser = async (user: IUser) => {
|
||||
const roles = (() => {
|
||||
const { usersRoles } = this.props;
|
||||
const handleRoles = (user: Pick<IUser, 'username' | 'roles'>) => {
|
||||
const rrr = (() => {
|
||||
const userRoles = usersRoles.find(u => u?.username === user.username);
|
||||
let r: string[] = [];
|
||||
if (userRoles?.roles?.length) r = userRoles.roles;
|
||||
if (user.roles?.length) r = [...r, ...user.roles];
|
||||
return uniq(r);
|
||||
})();
|
||||
if (roles.length) {
|
||||
const parsedRoles = await this.parseRoles(roles);
|
||||
this.setState({ roomUser: { ...user, parsedRoles } });
|
||||
} else {
|
||||
this.setState({ roomUser: user });
|
||||
if (rrr.length) {
|
||||
const parsedRoles = parseRoles(rrr);
|
||||
return parsedRoles;
|
||||
}
|
||||
};
|
||||
|
||||
loadUser = async () => {
|
||||
const { room, roomUser } = this.state;
|
||||
|
||||
const loadUser = async () => {
|
||||
if (isEmpty(roomUser)) {
|
||||
try {
|
||||
const roomUserId = getUidDirectMessage(room);
|
||||
const roomUserId = getUidDirectMessage(room || { rid, t });
|
||||
const result = await Services.getUserInfo(roomUserId);
|
||||
if (result.success) {
|
||||
const { user } = result;
|
||||
this.setUser(user as IUser);
|
||||
const r = handleRoles(user);
|
||||
setRoomUser({ ...user, roles: r });
|
||||
}
|
||||
} catch {
|
||||
// do nothing
|
||||
}
|
||||
} else {
|
||||
this.setUser(roomUser as IUser);
|
||||
}
|
||||
const r = handleRoles(roomUser);
|
||||
if (r) setRoomUser({ ...roomUser, roles: r });
|
||||
};
|
||||
|
||||
loadRoomFromRid = async () => {
|
||||
if (this.fromRid) {
|
||||
try {
|
||||
const sub = await getSubscriptionByRoomId(this.fromRid);
|
||||
this.subscriptionRoomFromRid = sub?.observe().subscribe(roomFromRid => {
|
||||
this.setState({ roomFromRid });
|
||||
const loadRoom = async () => {
|
||||
const permissionToEdit = isLivechat ? [editOmnichannelContact, editLivechatRoomCustomfields] : [editRoomPermission];
|
||||
const permissions = await hasPermission(permissionToEdit, rid);
|
||||
const canEdit = permissions.some(Boolean);
|
||||
const subRoom = await getSubscriptionByRoomId(rid);
|
||||
if (!subRoom && isDirect && fromRid) {
|
||||
const roomFromRid = await getSubscriptionByRoomId(fromRid);
|
||||
if (roomFromRid?.observe) {
|
||||
const sub = roomFromRid.observe();
|
||||
subscription.current = sub.subscribe(changes => {
|
||||
setRoomFromRid(changes.asPlain());
|
||||
});
|
||||
} catch (e) {
|
||||
// do nothing
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
loadRoom = async () => {
|
||||
const { room: roomState } = this.state;
|
||||
const { route, editRoomPermission, editOmnichannelContact, editLivechatRoomCustomfields } = this.props;
|
||||
let room = route.params?.room as any;
|
||||
const roomModel = room as TSubscriptionModel;
|
||||
if (roomModel && roomModel.observe) {
|
||||
this.roomObservable = roomModel.observe();
|
||||
this.subscription = this.roomObservable.subscribe(changes => {
|
||||
this.setState({ room: changes }, () => this.setHeader());
|
||||
} else if (subRoom?.observe) {
|
||||
const sub = subRoom.observe();
|
||||
subscription.current = sub.subscribe(changes => {
|
||||
setRoom(changes.asPlain());
|
||||
setHeader(canEdit);
|
||||
});
|
||||
} else {
|
||||
try {
|
||||
const result = await Services.getRoomInfo(this.rid);
|
||||
if (result.success) {
|
||||
({ room } = result);
|
||||
this.setState({ room: { ...roomState, ...room } });
|
||||
if (!isDirect) {
|
||||
const result = await Services.getRoomInfo(rid);
|
||||
if (result.success) setRoom({ ...room, ...(result.room as unknown as ISubscription) });
|
||||
}
|
||||
} catch (e) {
|
||||
log(e);
|
||||
}
|
||||
}
|
||||
|
||||
const permissionToEdit = this.isLivechat ? [editOmnichannelContact, editLivechatRoomCustomfields] : [editRoomPermission];
|
||||
|
||||
const permissions = await hasPermission(permissionToEdit, room.rid);
|
||||
if (permissions.some(Boolean)) {
|
||||
this.setState({ showEdit: true }, () => this.setHeader());
|
||||
}
|
||||
setShowEdit(canEdit);
|
||||
setHeader(canEdit);
|
||||
};
|
||||
|
||||
createDirect = () =>
|
||||
new Promise<void>(async (resolve, reject) => {
|
||||
const { route } = this.props;
|
||||
|
||||
const createDirect = () =>
|
||||
new Promise<void | ISubscription>(async (resolve, reject) => {
|
||||
// We don't need to create a direct
|
||||
const member = route.params?.member;
|
||||
if (!isEmpty(member)) {
|
||||
return resolve();
|
||||
}
|
||||
|
||||
// TODO: Check if some direct with the user already exists on database
|
||||
if (!isEmpty(member)) return resolve();
|
||||
try {
|
||||
const {
|
||||
roomUser: { username }
|
||||
} = this.state;
|
||||
const result = await Services.createDirectMessage(username);
|
||||
if (result.success) {
|
||||
const {
|
||||
room: { rid }
|
||||
} = result;
|
||||
return this.setState(({ room }) => ({ room: { ...room, rid } }), resolve);
|
||||
}
|
||||
const result = await Services.createDirectMessage(roomUser.username);
|
||||
if (result.success) return resolve({ ...roomUser, rid: result.room.rid });
|
||||
} catch {
|
||||
// do nothing
|
||||
reject();
|
||||
}
|
||||
reject();
|
||||
});
|
||||
|
||||
goRoom = () => {
|
||||
const handleGoRoom = (r?: ISubscription) => {
|
||||
logEvent(events.RI_GO_ROOM_USER);
|
||||
const { room } = this.state;
|
||||
const { navigation, isMasterDetail, subscribedRoom } = this.props;
|
||||
const params = {
|
||||
rid: room.rid,
|
||||
name: getRoomTitle(room),
|
||||
t: room.t,
|
||||
roomUserId: getUidDirectMessage(room)
|
||||
rid: r?.rid,
|
||||
name: getRoomTitle(r),
|
||||
t: r?.t,
|
||||
roomUserId: getUidDirectMessage(r)
|
||||
};
|
||||
|
||||
if (room.rid) {
|
||||
if (room.rid === subscribedRoom) {
|
||||
if (r?.rid) {
|
||||
if (r.rid === subscribedRoom) {
|
||||
if (isMasterDetail) {
|
||||
return Navigation.navigate('DrawerNavigator');
|
||||
return navigate('DrawerNavigator');
|
||||
}
|
||||
return navigation.goBack();
|
||||
goBack();
|
||||
goBack();
|
||||
return;
|
||||
}
|
||||
// if it's on master detail layout, we close the modal and replace RoomView
|
||||
goRoom({ item: params, isMasterDetail, popToRoot: true });
|
||||
}
|
||||
};
|
||||
|
||||
handleCreateDirectMessage = async (onPress: () => void) => {
|
||||
const handleCreateDirectMessage = async () => {
|
||||
try {
|
||||
if (this.isDirect) {
|
||||
await this.createDirect();
|
||||
let r = room;
|
||||
if (isDirect) {
|
||||
const direct = await createDirect();
|
||||
if (direct) r = direct;
|
||||
}
|
||||
onPress();
|
||||
handleGoRoom(r);
|
||||
} catch {
|
||||
EventEmitter.emit(LISTENER, {
|
||||
message: I18n.t('error-action-not-allowed', { action: I18n.t('Create_Direct_Messages') })
|
||||
|
@ -390,144 +255,61 @@ class RoomInfoView extends React.Component<IRoomInfoViewProps, IRoomInfoViewStat
|
|||
}
|
||||
};
|
||||
|
||||
handleBlockUser = async (rid: string, blocked: string, block: boolean) => {
|
||||
const handleBlockUser = async () => {
|
||||
const r = roomFromRid || room;
|
||||
const userBlocked = roomUser._id;
|
||||
const blocker = r?.blocker;
|
||||
if (!r?.rid) return;
|
||||
logEvent(events.RI_TOGGLE_BLOCK_USER);
|
||||
try {
|
||||
await Services.toggleBlockUser(rid, blocked, block);
|
||||
await Services.toggleBlockUser(r.rid, userBlocked, !blocker);
|
||||
} catch (e) {
|
||||
log(e);
|
||||
}
|
||||
};
|
||||
|
||||
handleEditAvatar = () => {
|
||||
const { navigation } = this.props;
|
||||
const { room } = this.state;
|
||||
navigation.navigate('ChangeAvatarView', { titleHeader: I18n.t('Room_Info'), room, t: this.t, context: 'room' });
|
||||
const handleIgnoreUser = () => {
|
||||
const r = roomFromRid || room;
|
||||
const isIgnored = r?.ignored?.includes?.(roomUser._id);
|
||||
if (r?.rid) handleIgnore(roomUser._id, !isIgnored, r?.rid);
|
||||
};
|
||||
|
||||
renderAvatar = (room: ISubscription, roomUser: IUserParsed) => {
|
||||
const { theme } = this.props;
|
||||
const { showEdit } = this.state;
|
||||
const showAvatarEdit = showEdit && this.t !== SubscriptionType.OMNICHANNEL;
|
||||
return (
|
||||
<ScrollView style={[styles.scroll, { backgroundColor: colors.backgroundColor }]}>
|
||||
<StatusBar />
|
||||
<SafeAreaView style={{ backgroundColor: colors.backgroundColor }} testID='room-info-view'>
|
||||
<View style={[styles.avatarContainer, { backgroundColor: colors.auxiliaryBackground }]}>
|
||||
<RoomInfoViewAvatar
|
||||
username={room?.name || roomUser.username}
|
||||
rid={room?.rid}
|
||||
userId={roomUser?._id}
|
||||
handleEditAvatar={() => navigate('ChangeAvatarView', { titleHeader: I18n.t('Room_Info'), room, t, context: 'room' })}
|
||||
showEdit={showEdit}
|
||||
type={t}
|
||||
/>
|
||||
<RoomInfoViewTitle
|
||||
type={t}
|
||||
room={room || roomUser}
|
||||
name={roomUser?.name}
|
||||
username={roomUser?.username}
|
||||
statusText={roomUser?.statusText}
|
||||
/>
|
||||
<RoomInfoButtons
|
||||
rid={room?.rid || rid}
|
||||
fromRid={fromRid}
|
||||
handleBlockUser={handleBlockUser}
|
||||
handleCreateDirectMessage={handleCreateDirectMessage}
|
||||
handleIgnoreUser={handleIgnoreUser}
|
||||
isDirect={isDirect}
|
||||
room={room || roomUser}
|
||||
roomUserId={roomUser?._id}
|
||||
roomFromRid={roomFromRid}
|
||||
/>
|
||||
</View>
|
||||
<RoomInfoViewBody isDirect={isDirect} room={room} roomUser={roomUser} />
|
||||
</SafeAreaView>
|
||||
</ScrollView>
|
||||
);
|
||||
};
|
||||
|
||||
return (
|
||||
<AvatarWithEdit
|
||||
text={room.name || roomUser.username}
|
||||
style={styles.avatar}
|
||||
type={this.t}
|
||||
rid={room?.rid}
|
||||
handleEdit={showAvatarEdit ? this.handleEditAvatar : undefined}
|
||||
>
|
||||
{this.t === SubscriptionType.DIRECT && roomUser._id ? (
|
||||
<View style={[sharedStyles.status, { backgroundColor: themes[theme].auxiliaryBackground }]}>
|
||||
<Status size={20} id={roomUser._id} />
|
||||
</View>
|
||||
) : null}
|
||||
</AvatarWithEdit>
|
||||
);
|
||||
};
|
||||
|
||||
renderButton = (onPress: () => void, iconName: TIconsName, text: string, danger?: boolean) => {
|
||||
const { theme } = this.props;
|
||||
const color = danger ? themes[theme].dangerColor : themes[theme].actionTintColor;
|
||||
return (
|
||||
<BorderlessButton testID={`room-info-view-${iconName}`} onPress={onPress} style={styles.roomButton}>
|
||||
<CustomIcon name={iconName} size={30} color={color} />
|
||||
<Text style={[styles.roomButtonText, { color }]}>{text}</Text>
|
||||
</BorderlessButton>
|
||||
);
|
||||
};
|
||||
|
||||
renderButtons = () => {
|
||||
const { roomFromRid, roomUser, room } = this.state;
|
||||
|
||||
const isFromDm = roomFromRid?.rid ? new RegExp(roomUser._id).test(roomFromRid.rid) : false;
|
||||
const isDirectFromSaved = this.isDirect && this.fromRid && roomFromRid;
|
||||
|
||||
// Following the web behavior, when is a DM with myself, shouldn't appear block or ignore option
|
||||
const isDmWithMyself = roomFromRid?.uids && roomFromRid.uids?.filter(uid => uid !== roomUser._id).length === 0;
|
||||
|
||||
const ignored = roomFromRid?.ignored;
|
||||
const isIgnored = ignored?.includes?.(roomUser._id);
|
||||
|
||||
const blocker = roomFromRid?.blocker;
|
||||
|
||||
return (
|
||||
<View style={styles.roomButtonsContainer}>
|
||||
{this.renderButton(() => this.handleCreateDirectMessage(this.goRoom), 'message', I18n.t('Message'))}
|
||||
<CallButton isDirect={this.isDirect} rid={room.rid} />
|
||||
{isDirectFromSaved && !isFromDm && !isDmWithMyself
|
||||
? this.renderButton(
|
||||
() => handleIgnore(roomUser._id, !isIgnored, roomFromRid.rid),
|
||||
'ignore',
|
||||
I18n.t(isIgnored ? 'Unignore' : 'Ignore'),
|
||||
true
|
||||
)
|
||||
: null}
|
||||
{isDirectFromSaved && isFromDm
|
||||
? this.renderButton(
|
||||
() => this.handleBlockUser(roomFromRid.rid, roomUser._id, !blocker),
|
||||
'ignore',
|
||||
I18n.t(`${blocker ? 'Unblock' : 'Block'}_user`),
|
||||
true
|
||||
)
|
||||
: null}
|
||||
</View>
|
||||
);
|
||||
};
|
||||
|
||||
renderContent = () => {
|
||||
const { room, roomUser } = this.state;
|
||||
|
||||
if (this.isDirect) {
|
||||
return <Direct roomUser={roomUser as IUserParsed} />;
|
||||
}
|
||||
|
||||
if (this.t === SubscriptionType.OMNICHANNEL) {
|
||||
return <Livechat room={room} roomUser={roomUser as ILivechatVisitorModified} />;
|
||||
}
|
||||
return <Channel room={room} />;
|
||||
};
|
||||
|
||||
render() {
|
||||
const { room, roomUser } = this.state;
|
||||
const { theme } = this.props;
|
||||
const roomUserParsed = roomUser as IUserParsed;
|
||||
|
||||
return (
|
||||
<ScrollView style={[styles.scroll, { backgroundColor: themes[theme].backgroundColor }]}>
|
||||
<StatusBar />
|
||||
<SafeAreaView style={{ backgroundColor: themes[theme].backgroundColor }} testID='room-info-view'>
|
||||
<View style={[styles.avatarContainer, { backgroundColor: themes[theme].auxiliaryBackground }]}>
|
||||
{this.renderAvatar(room, roomUserParsed)}
|
||||
<View style={styles.roomTitleContainer}>
|
||||
{renderRoomTitle({
|
||||
room,
|
||||
type: this.t,
|
||||
name: roomUserParsed?.name,
|
||||
username: roomUserParsed?.username,
|
||||
statusText: roomUserParsed?.statusText,
|
||||
theme
|
||||
})}
|
||||
</View>
|
||||
{this.renderButtons()}
|
||||
</View>
|
||||
{this.renderContent()}
|
||||
</SafeAreaView>
|
||||
</ScrollView>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
const mapStateToProps = (state: IApplicationState) => ({
|
||||
subscribedRoom: state.room.subscribedRoom,
|
||||
isMasterDetail: state.app.isMasterDetail,
|
||||
jitsiEnabled: (state.settings.Jitsi_Enabled as boolean) || false,
|
||||
editRoomPermission: state.permissions['edit-room'],
|
||||
editOmnichannelContact: state.permissions['edit-omnichannel-contact'],
|
||||
editLivechatRoomCustomfields: state.permissions['edit-livechat-room-customfields'],
|
||||
roles: state.roles,
|
||||
usersRoles: state.usersRoles
|
||||
});
|
||||
|
||||
export default connect(mapStateToProps)(withTheme(RoomInfoView));
|
||||
export default RoomInfoView;
|
||||
|
|
|
@ -30,7 +30,8 @@ export default StyleSheet.create({
|
|||
roomTitleContainer: {
|
||||
paddingTop: 32,
|
||||
marginHorizontal: 16,
|
||||
alignItems: 'center'
|
||||
alignItems: 'center',
|
||||
flexDirection: 'row'
|
||||
},
|
||||
roomTitle: {
|
||||
fontSize: 20,
|
||||
|
|
|
@ -11,11 +11,14 @@ export const useScroll = ({ listRef, messagesIds }: { listRef: TListRef; message
|
|||
const viewableItems = useRef<ViewToken[] | null>(null);
|
||||
const highlightTimeout = useRef<ReturnType<typeof setTimeout> | null>(null);
|
||||
|
||||
useEffect(() => () => {
|
||||
if (highlightTimeout.current) {
|
||||
clearTimeout(highlightTimeout.current);
|
||||
}
|
||||
});
|
||||
useEffect(
|
||||
() => () => {
|
||||
if (highlightTimeout.current) {
|
||||
clearTimeout(highlightTimeout.current);
|
||||
}
|
||||
},
|
||||
[]
|
||||
);
|
||||
|
||||
const jumpToBottom = () => {
|
||||
listRef.current?.scrollToOffset({ offset: -100 });
|
||||
|
@ -52,10 +55,10 @@ export const useScroll = ({ listRef, messagesIds }: { listRef: TListRef; message
|
|||
jumping.current = true;
|
||||
|
||||
// look for the message on the state
|
||||
const index = messagesIds.current?.findIndex(item => item === messageId);
|
||||
const index = messagesIds.current?.findIndex(item => item === messageId) ?? -1;
|
||||
|
||||
// if found message, scroll to it
|
||||
if (index && index > -1) {
|
||||
if (index !== -1) {
|
||||
listRef.current?.scrollToIndex({ index, viewPosition: 0.5, viewOffset: 100 });
|
||||
|
||||
// wait for scroll animation to finish
|
||||
|
|
|
@ -196,4 +196,4 @@ export const initApi = async (user: string, password: string): Promise<AxiosInst
|
|||
api.defaults.headers.common['X-User-Id'] = userId;
|
||||
api.defaults.headers.common['X-Auth-Token'] = authToken;
|
||||
return api;
|
||||
};
|
||||
};
|
||||
|
|
|
@ -478,7 +478,7 @@ describe('Room screen', () => {
|
|||
.toExist()
|
||||
.withTimeout(2000);
|
||||
await expect(element(by.id('action-sheet-handle'))).toBeVisible();
|
||||
await element(by.id('action-sheet-handle')).swipe('up', 'fast', 0.5);
|
||||
await element(by.id('action-sheet')).swipe('up', 'fast', 0.5);
|
||||
await sleep(300); // wait for animation
|
||||
await waitFor(element(by[textMatcher]('Delete')))
|
||||
.toExist()
|
||||
|
|
|
@ -237,7 +237,7 @@ describe('Threads', () => {
|
|||
.withTimeout(5000);
|
||||
await element(by.id(`message-thread-button-${thread}`)).tap();
|
||||
await tryTapping(element(by[textMatcher]('replied')).atIndex(0), 2000, true);
|
||||
await element(by.id('action-sheet-handle')).swipe('up', 'fast', 0.5);
|
||||
await element(by.id('action-sheet')).swipe('up', 'fast', 0.5);
|
||||
await sleep(300); // wait for animation
|
||||
await element(by[textMatcher]('Delete')).atIndex(0).tap();
|
||||
await element(by[textMatcher]('Delete').and(by.type(alertButtonType))).tap();
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import { by, device, element, expect, waitFor } from 'detox';
|
||||
|
||||
import { TTextMatcher, login, navigateToLogin, platformTypes, searchRoom, sleep, tapBack, tryTapping } from '../../helpers/app';
|
||||
import { ITestUser, createRandomRoom, createRandomUser, initApi } from '../../helpers/data_setup';
|
||||
import { ITestUser, createRandomUser, initApi } from '../../helpers/data_setup';
|
||||
import random from '../../helpers/random';
|
||||
|
||||
const roomId = '64b846e4760e618aa9f91ab7';
|
||||
|
@ -90,8 +90,8 @@ describe('Auto Translate', () => {
|
|||
};
|
||||
|
||||
const newMessage = {
|
||||
[languages.default]: 'cat',
|
||||
[languages.translated]: 'gato'
|
||||
[languages.default]: 'Cat',
|
||||
[languages.translated]: 'Gato'
|
||||
};
|
||||
|
||||
const attachmentMessage = {
|
||||
|
@ -101,7 +101,6 @@ describe('Auto Translate', () => {
|
|||
|
||||
beforeAll(async () => {
|
||||
const user = await createRandomUser();
|
||||
await createRandomRoom(user);
|
||||
await device.launchApp({ permissions: { notifications: 'YES' }, delete: true });
|
||||
({ textMatcher } = platformTypes[device.getPlatform()]);
|
||||
await navigateToLogin();
|
||||
|
@ -171,18 +170,18 @@ describe('Auto Translate', () => {
|
|||
|
||||
it('should see new message translated', async () => {
|
||||
const randomMatcher = random();
|
||||
const data = await sendMessageOnTranslationTestRoom(`${newMessage[languages.default]} - ${randomMatcher}`);
|
||||
await searchMessage(`${newMessage[languages.default]} - ${randomMatcher}`, textMatcher); // will scroll the messages list to the last one
|
||||
await waitForVisibleTextMatcher(`${newMessage[languages.translated]} - ${randomMatcher}`, textMatcher);
|
||||
const data = await sendMessageOnTranslationTestRoom(`${newMessage[languages.default]}. Rc${randomMatcher}`);
|
||||
await searchMessage(`${newMessage[languages.default]}. Rc${randomMatcher}`, textMatcher); // will scroll the messages list to the last one
|
||||
await waitForVisibleTextMatcher(`${newMessage[languages.translated]}. Rc${randomMatcher}`, textMatcher);
|
||||
await deleteMessageOnTranslationTestRoom(data);
|
||||
});
|
||||
|
||||
it('should see original message', async () => {
|
||||
const randomMatcher = random();
|
||||
const data = await sendMessageOnTranslationTestRoom(`${newMessage[languages.default]} - ${randomMatcher}`);
|
||||
await waitForVisibleTextMatcher(`${newMessage[languages.translated]} - ${randomMatcher}`, textMatcher);
|
||||
const data = await sendMessageOnTranslationTestRoom(`${newMessage[languages.default]}. Rc${randomMatcher}`);
|
||||
await waitForVisibleTextMatcher(`${newMessage[languages.translated]}. Rc${randomMatcher}`, textMatcher);
|
||||
|
||||
await tryTapping(element(by[textMatcher](`${newMessage[languages.translated]} - ${randomMatcher}`)).atIndex(0), 2000, true);
|
||||
await tryTapping(element(by[textMatcher](`${newMessage[languages.translated]}. Rc${randomMatcher}`)).atIndex(0), 2000, true);
|
||||
|
||||
await waitForVisible('action-sheet-handle');
|
||||
await element(by.id('action-sheet-handle')).swipe('up', 'fast', 0.5);
|
||||
|
@ -190,16 +189,16 @@ describe('Auto Translate', () => {
|
|||
await waitForVisibleTextMatcher('View original', textMatcher);
|
||||
await element(by[textMatcher]('View original')).atIndex(0).tap();
|
||||
|
||||
await waitForVisibleTextMatcher(`${newMessage[languages.default]} - ${randomMatcher}`, textMatcher);
|
||||
await waitForVisibleTextMatcher(`${newMessage[languages.default]}. Rc${randomMatcher}`, textMatcher);
|
||||
|
||||
await deleteMessageOnTranslationTestRoom(data);
|
||||
});
|
||||
|
||||
it('disable auto translate and see original message', async () => {
|
||||
const randomMatcher = random();
|
||||
const data = await sendMessageOnTranslationTestRoom(`${newMessage[languages.default]} - ${randomMatcher}`);
|
||||
const data = await sendMessageOnTranslationTestRoom(`${newMessage[languages.default]}. Rc${randomMatcher}`);
|
||||
|
||||
await waitForVisibleTextMatcher(`${newMessage[languages.translated]} - ${randomMatcher}`, textMatcher);
|
||||
await waitForVisibleTextMatcher(`${newMessage[languages.translated]}. Rc${randomMatcher}`, textMatcher);
|
||||
|
||||
await element(by.id('room-header')).tap();
|
||||
await waitForVisible('room-actions-view');
|
||||
|
@ -214,7 +213,7 @@ describe('Auto Translate', () => {
|
|||
await tapBack();
|
||||
await tapBack();
|
||||
|
||||
await waitForVisibleTextMatcher(`${newMessage[languages.default]} - ${randomMatcher}`, textMatcher);
|
||||
await waitForVisibleTextMatcher(`${newMessage[languages.default]}. Rc${randomMatcher}`, textMatcher);
|
||||
|
||||
await deleteMessageOnTranslationTestRoom(data);
|
||||
});
|
||||
|
|
|
@ -110,15 +110,18 @@ PODS:
|
|||
- hermes-engine (0.11.0)
|
||||
- iosMath (0.9.4)
|
||||
- libevent (2.1.12)
|
||||
- libwebp (1.2.4):
|
||||
- libwebp/demux (= 1.2.4)
|
||||
- libwebp/mux (= 1.2.4)
|
||||
- libwebp/webp (= 1.2.4)
|
||||
- libwebp/demux (1.2.4):
|
||||
- libwebp (1.3.2):
|
||||
- libwebp/demux (= 1.3.2)
|
||||
- libwebp/mux (= 1.3.2)
|
||||
- libwebp/sharpyuv (= 1.3.2)
|
||||
- libwebp/webp (= 1.3.2)
|
||||
- libwebp/demux (1.3.2):
|
||||
- libwebp/webp
|
||||
- libwebp/mux (1.2.4):
|
||||
- libwebp/mux (1.3.2):
|
||||
- libwebp/demux
|
||||
- libwebp/webp (1.2.4)
|
||||
- libwebp/sharpyuv (1.3.2)
|
||||
- libwebp/webp (1.3.2):
|
||||
- libwebp/sharpyuv
|
||||
- MMKV (1.2.13):
|
||||
- MMKVCore (~> 1.2.13)
|
||||
- MMKVCore (1.2.15)
|
||||
|
@ -503,8 +506,8 @@ PODS:
|
|||
- React-Core
|
||||
- RNFastImage (8.5.12):
|
||||
- React-Core
|
||||
- SDWebImage (~> 5.12.5)
|
||||
- SDWebImageWebPCoder (~> 0.8.4)
|
||||
- SDWebImage (~> 5.17.0)
|
||||
- SDWebImageWebPCoder (~> 0.13.0)
|
||||
- RNFBAnalytics (14.11.0):
|
||||
- Firebase/AnalyticsWithoutAdIdSupport (= 8.15.0)
|
||||
- React-Core
|
||||
|
@ -569,12 +572,12 @@ PODS:
|
|||
- React-Core
|
||||
- RNVectorIcons (9.1.0):
|
||||
- React-Core
|
||||
- SDWebImage (5.12.6):
|
||||
- SDWebImage/Core (= 5.12.6)
|
||||
- SDWebImage/Core (5.12.6)
|
||||
- SDWebImageWebPCoder (0.8.5):
|
||||
- SDWebImage (5.17.0):
|
||||
- SDWebImage/Core (= 5.17.0)
|
||||
- SDWebImage/Core (5.17.0)
|
||||
- SDWebImageWebPCoder (0.13.0):
|
||||
- libwebp (~> 1.0)
|
||||
- SDWebImage/Core (~> 5.10)
|
||||
- SDWebImage/Core (~> 5.17)
|
||||
- simdjson (0.9.6-fix2)
|
||||
- TOCropViewController (2.6.1)
|
||||
- WatermelonDB (0.23.0):
|
||||
|
@ -908,7 +911,7 @@ SPEC CHECKSUMS:
|
|||
hermes-engine: 84e3af1ea01dd7351ac5d8689cbbea1f9903ffc3
|
||||
iosMath: f7a6cbadf9d836d2149c2a84c435b1effc244cba
|
||||
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
|
||||
libwebp: f62cb61d0a484ba548448a4bd52aabf150ff6eef
|
||||
libwebp: 1786c9f4ff8a279e4dac1e8f385004d5fc253009
|
||||
MMKV: aac95d817a100479445633f2b3ed8961b4ac5043
|
||||
MMKVCore: ddf41b9d9262f058419f9ba7598719af56c02cd3
|
||||
nanopb: a0ba3315591a9ae0a16a309ee504766e90db0c96
|
||||
|
@ -966,7 +969,7 @@ SPEC CHECKSUMS:
|
|||
RNCPicker: 914b557e20b3b8317b084aca9ff4b4edb95f61e4
|
||||
RNDateTimePicker: 7658208086d86d09e1627b5c34ba0cf237c60140
|
||||
RNDeviceInfo: 4701f0bf2a06b34654745053db0ce4cb0c53ada7
|
||||
RNFastImage: d5510534be9cccc80e824bfec6369c116d212871
|
||||
RNFastImage: 68cd51fa6ee8c65c7eb08654f4bf3c994be7839e
|
||||
RNFBAnalytics: 091c8adcbb0da1e1680ce434fc6e8a0a501fe2e6
|
||||
RNFBApp: b1b5a80a676a07dea17e778bda7c1e8b69b2f5ec
|
||||
RNFBCrashlytics: 357955a1564721ca9001960e57b395c6a319f9be
|
||||
|
@ -980,8 +983,8 @@ SPEC CHECKSUMS:
|
|||
RNScreens: 40a2cb40a02a609938137a1e0acfbf8fc9eebf19
|
||||
RNSVG: c1e76b81c76cdcd34b4e1188852892dc280eb902
|
||||
RNVectorIcons: 7923e585eaeb139b9f4531d25a125a1500162a0b
|
||||
SDWebImage: a47aea9e3d8816015db4e523daff50cfd294499d
|
||||
SDWebImageWebPCoder: 908b83b6adda48effe7667cd2b7f78c897e5111d
|
||||
SDWebImage: 750adf017a315a280c60fde706ab1e552a3ae4e9
|
||||
SDWebImageWebPCoder: af09429398d99d524cae2fe00f6f0f6e491ed102
|
||||
simdjson: 85016870cd17207312b718ef6652eb6a1cd6a2b0
|
||||
TOCropViewController: edfd4f25713d56905ad1e0b9f5be3fbe0f59c863
|
||||
WatermelonDB: 577c61fceff16e9f9103b59d14aee4850c0307b6
|
||||
|
|
|
@ -79,7 +79,7 @@
|
|||
1EFEB5982493B6640072EDC0 /* NotificationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EFEB5972493B6640072EDC0 /* NotificationService.swift */; };
|
||||
1EFEB59C2493B6640072EDC0 /* NotificationService.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 1EFEB5952493B6640072EDC0 /* NotificationService.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
||||
24A2AEF2383D44B586D31C01 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 06BB44DD4855498082A744AD /* libz.tbd */; };
|
||||
4183F9F3648AA5A8E451AD6F /* libPods-defaults-ShareRocketChatRN.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AA38524D073B37D626BDE9B2 /* libPods-defaults-ShareRocketChatRN.a */; };
|
||||
2B17932EE8ECAE57F3EEF66E /* libPods-defaults-ShareRocketChatRN.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3053C7BCF6D30F47A868926 /* libPods-defaults-ShareRocketChatRN.a */; };
|
||||
4C4C8603EF082F0A33A95522 /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45D5C142B655F8EFD006792C /* ExpoModulesProvider.swift */; };
|
||||
7A006F14229C83B600803143 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 7A006F13229C83B600803143 /* GoogleService-Info.plist */; };
|
||||
7A0D62D2242AB187006D5C06 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7A0D62D1242AB187006D5C06 /* LaunchScreen.storyboard */; };
|
||||
|
@ -140,11 +140,11 @@
|
|||
7AE10C0628A59530003593CB /* Inter.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7AE10C0528A59530003593CB /* Inter.ttf */; };
|
||||
7AE10C0728A59530003593CB /* Inter.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7AE10C0528A59530003593CB /* Inter.ttf */; };
|
||||
7AE10C0828A59530003593CB /* Inter.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7AE10C0528A59530003593CB /* Inter.ttf */; };
|
||||
830931BDC1F85C878AA6CCB8 /* libPods-defaults-Rocket.Chat.a in Frameworks */ = {isa = PBXBuildFile; fileRef = EE0803F389AA8D1AFA4C89DC /* libPods-defaults-Rocket.Chat.a */; };
|
||||
85160EB6C143E0493FE5F014 /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 194D9A8897F4A486C2C6F89A /* ExpoModulesProvider.swift */; };
|
||||
9C6A2011983C0EB1E0BFDF8C /* libPods-defaults-Rocket.Chat.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F4094FC013D693914C83D9F9 /* libPods-defaults-Rocket.Chat.a */; };
|
||||
A7621A83F19200B4F2C5B597 /* libPods-defaults-RocketChatRN.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 80E4A43655C6403863DE2A5B /* libPods-defaults-RocketChatRN.a */; };
|
||||
BC404914E86821389EEB543D /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 391C4F7AA7023CD41EEBD106 /* ExpoModulesProvider.swift */; };
|
||||
C1ED5A5410EB6CF912D688B8 /* libPods-defaults-NotificationService.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 111F5EB407906D059A1348AC /* libPods-defaults-NotificationService.a */; };
|
||||
CE728835631624C36534C83A /* libPods-defaults-RocketChatRN.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AB0FA32CE0788455453FBB0B /* libPods-defaults-RocketChatRN.a */; };
|
||||
BCB59C4D3E936045A1B4B743 /* libPods-defaults-NotificationService.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA952B83D7FF30D4E2CFFEE /* libPods-defaults-NotificationService.a */; };
|
||||
D94D81FB9E10756FAA03F203 /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 016747EF3B9FED8DE2C9DA14 /* ExpoModulesProvider.swift */; };
|
||||
DD2BA30A89E64F189C2C24AC /* libWatermelonDB.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BA7E862283664608B3894E34 /* libWatermelonDB.a */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
@ -210,9 +210,8 @@
|
|||
/* Begin PBXFileReference section */
|
||||
008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = "<group>"; };
|
||||
016747EF3B9FED8DE2C9DA14 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-defaults-ShareRocketChatRN/ExpoModulesProvider.swift"; sourceTree = "<group>"; };
|
||||
05D159ED244184CFD689E5A7 /* Pods-defaults-Rocket.Chat.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-Rocket.Chat.debug.xcconfig"; path = "Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
06BB44DD4855498082A744AD /* libz.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
|
||||
111F5EB407906D059A1348AC /* libPods-defaults-NotificationService.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-NotificationService.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
0A0A154901DFF7277ABA48FC /* Pods-defaults-RocketChatRN.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-RocketChatRN.debug.xcconfig"; path = "Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
13B07F961A680F5B00A75B9A /* Rocket.Chat Experimental.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Rocket.Chat Experimental.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = RocketChatRN/AppDelegate.h; sourceTree = "<group>"; };
|
||||
13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = RocketChatRN/Images.xcassets; sourceTree = "<group>"; };
|
||||
|
@ -265,11 +264,10 @@
|
|||
1EFEB5972493B6640072EDC0 /* NotificationService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationService.swift; sourceTree = "<group>"; };
|
||||
1EFEB5992493B6640072EDC0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
1EFEB5A12493B67D0072EDC0 /* NotificationService.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = NotificationService.entitlements; sourceTree = "<group>"; };
|
||||
2D1498938315CC290B97920B /* Pods-defaults-Rocket.Chat.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-Rocket.Chat.release.xcconfig"; path = "Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat.release.xcconfig"; sourceTree = "<group>"; };
|
||||
391C4F7AA7023CD41EEBD106 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-defaults-Rocket.Chat/ExpoModulesProvider.swift"; sourceTree = "<group>"; };
|
||||
45D5C142B655F8EFD006792C /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-defaults-RocketChatRN/ExpoModulesProvider.swift"; sourceTree = "<group>"; };
|
||||
4F33E4DA6CCD312106101066 /* Pods-defaults-ShareRocketChatRN.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-ShareRocketChatRN.debug.xcconfig"; path = "Target Support Files/Pods-defaults-ShareRocketChatRN/Pods-defaults-ShareRocketChatRN.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
60B2A6A31FC4588700BD58E5 /* RocketChatRN.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = RocketChatRN.entitlements; path = RocketChatRN/RocketChatRN.entitlements; sourceTree = "<group>"; };
|
||||
6B89A0C56BF3A44505DEAF83 /* Pods-defaults-ShareRocketChatRN.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-ShareRocketChatRN.debug.xcconfig"; path = "Target Support Files/Pods-defaults-ShareRocketChatRN/Pods-defaults-ShareRocketChatRN.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
7A006F13229C83B600803143 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
|
||||
7A0D62D1242AB187006D5C06 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
7A14FCEC257FEB3A005BDCD4 /* Experimental.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Experimental.xcassets; sourceTree = "<group>"; };
|
||||
|
@ -280,16 +278,18 @@
|
|||
7AAB3E52257E6A6E00707CF6 /* Rocket.Chat.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Rocket.Chat.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
7ACD4853222860DE00442C55 /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
|
||||
7AE10C0528A59530003593CB /* Inter.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Inter.ttf; sourceTree = "<group>"; };
|
||||
9AF8F9AFBBF71270CE75AF6D /* Pods-defaults-ShareRocketChatRN.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-ShareRocketChatRN.release.xcconfig"; path = "Target Support Files/Pods-defaults-ShareRocketChatRN/Pods-defaults-ShareRocketChatRN.release.xcconfig"; sourceTree = "<group>"; };
|
||||
AA38524D073B37D626BDE9B2 /* libPods-defaults-ShareRocketChatRN.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-ShareRocketChatRN.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
AB0FA32CE0788455453FBB0B /* libPods-defaults-RocketChatRN.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-RocketChatRN.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
7B761BFAFBCDE593C2BAA688 /* Pods-defaults-NotificationService.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-NotificationService.release.xcconfig"; path = "Target Support Files/Pods-defaults-NotificationService/Pods-defaults-NotificationService.release.xcconfig"; sourceTree = "<group>"; };
|
||||
80E4A43655C6403863DE2A5B /* libPods-defaults-RocketChatRN.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-RocketChatRN.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
8CAEA4511906BB1E01898414 /* Pods-defaults-NotificationService.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-NotificationService.debug.xcconfig"; path = "Target Support Files/Pods-defaults-NotificationService/Pods-defaults-NotificationService.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
B3053C7BCF6D30F47A868926 /* libPods-defaults-ShareRocketChatRN.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-ShareRocketChatRN.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
B37C79D9BD0742CE936B6982 /* libc++.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
|
||||
BA7E862283664608B3894E34 /* libWatermelonDB.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libWatermelonDB.a; sourceTree = "<group>"; };
|
||||
D04D04B2EA8D88C19F091B19 /* Pods-defaults-RocketChatRN.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-RocketChatRN.release.xcconfig"; path = "Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN.release.xcconfig"; sourceTree = "<group>"; };
|
||||
D15DA76143AD7A4D6E8BA4D0 /* Pods-defaults-RocketChatRN.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-RocketChatRN.debug.xcconfig"; path = "Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
D6F1E6B6A6B836D26CEBE5B4 /* Pods-defaults-NotificationService.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-NotificationService.release.xcconfig"; path = "Target Support Files/Pods-defaults-NotificationService/Pods-defaults-NotificationService.release.xcconfig"; sourceTree = "<group>"; };
|
||||
EC65E9A63DAB7D0BDF669DFA /* Pods-defaults-NotificationService.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-NotificationService.debug.xcconfig"; path = "Target Support Files/Pods-defaults-NotificationService/Pods-defaults-NotificationService.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
EE0803F389AA8D1AFA4C89DC /* libPods-defaults-Rocket.Chat.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-Rocket.Chat.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
C7B49FFF390E777885466DB8 /* Pods-defaults-Rocket.Chat.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-Rocket.Chat.release.xcconfig"; path = "Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat.release.xcconfig"; sourceTree = "<group>"; };
|
||||
D18A75D6B09FE66EF4BA01D5 /* Pods-defaults-ShareRocketChatRN.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-ShareRocketChatRN.release.xcconfig"; path = "Target Support Files/Pods-defaults-ShareRocketChatRN/Pods-defaults-ShareRocketChatRN.release.xcconfig"; sourceTree = "<group>"; };
|
||||
D71FBB48FEF190385BF70D2C /* Pods-defaults-Rocket.Chat.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-Rocket.Chat.debug.xcconfig"; path = "Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
DD34A9C7880B17A54E25088C /* Pods-defaults-RocketChatRN.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-RocketChatRN.release.xcconfig"; path = "Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN.release.xcconfig"; sourceTree = "<group>"; };
|
||||
F4094FC013D693914C83D9F9 /* libPods-defaults-Rocket.Chat.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-Rocket.Chat.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
FDA952B83D7FF30D4E2CFFEE /* libPods-defaults-NotificationService.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-NotificationService.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
|
@ -310,7 +310,7 @@
|
|||
7ACD4897222860DE00442C55 /* JavaScriptCore.framework in Frameworks */,
|
||||
24A2AEF2383D44B586D31C01 /* libz.tbd in Frameworks */,
|
||||
DD2BA30A89E64F189C2C24AC /* libWatermelonDB.a in Frameworks */,
|
||||
CE728835631624C36534C83A /* libPods-defaults-RocketChatRN.a in Frameworks */,
|
||||
A7621A83F19200B4F2C5B597 /* libPods-defaults-RocketChatRN.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
@ -319,7 +319,7 @@
|
|||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
1E25743422CBA2CF005A877F /* JavaScriptCore.framework in Frameworks */,
|
||||
4183F9F3648AA5A8E451AD6F /* libPods-defaults-ShareRocketChatRN.a in Frameworks */,
|
||||
2B17932EE8ECAE57F3EEF66E /* libPods-defaults-ShareRocketChatRN.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
@ -327,7 +327,7 @@
|
|||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
C1ED5A5410EB6CF912D688B8 /* libPods-defaults-NotificationService.a in Frameworks */,
|
||||
BCB59C4D3E936045A1B4B743 /* libPods-defaults-NotificationService.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
@ -348,7 +348,7 @@
|
|||
7AAB3E3D257E6A6E00707CF6 /* JavaScriptCore.framework in Frameworks */,
|
||||
7AAB3E3E257E6A6E00707CF6 /* libz.tbd in Frameworks */,
|
||||
7AAB3E3F257E6A6E00707CF6 /* libWatermelonDB.a in Frameworks */,
|
||||
830931BDC1F85C878AA6CCB8 /* libPods-defaults-Rocket.Chat.a in Frameworks */,
|
||||
9C6A2011983C0EB1E0BFDF8C /* libPods-defaults-Rocket.Chat.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
@ -499,14 +499,14 @@
|
|||
7AC2B09613AA7C3FEBAC9F57 /* Pods */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
EC65E9A63DAB7D0BDF669DFA /* Pods-defaults-NotificationService.debug.xcconfig */,
|
||||
D6F1E6B6A6B836D26CEBE5B4 /* Pods-defaults-NotificationService.release.xcconfig */,
|
||||
05D159ED244184CFD689E5A7 /* Pods-defaults-Rocket.Chat.debug.xcconfig */,
|
||||
2D1498938315CC290B97920B /* Pods-defaults-Rocket.Chat.release.xcconfig */,
|
||||
D15DA76143AD7A4D6E8BA4D0 /* Pods-defaults-RocketChatRN.debug.xcconfig */,
|
||||
D04D04B2EA8D88C19F091B19 /* Pods-defaults-RocketChatRN.release.xcconfig */,
|
||||
4F33E4DA6CCD312106101066 /* Pods-defaults-ShareRocketChatRN.debug.xcconfig */,
|
||||
9AF8F9AFBBF71270CE75AF6D /* Pods-defaults-ShareRocketChatRN.release.xcconfig */,
|
||||
8CAEA4511906BB1E01898414 /* Pods-defaults-NotificationService.debug.xcconfig */,
|
||||
7B761BFAFBCDE593C2BAA688 /* Pods-defaults-NotificationService.release.xcconfig */,
|
||||
D71FBB48FEF190385BF70D2C /* Pods-defaults-Rocket.Chat.debug.xcconfig */,
|
||||
C7B49FFF390E777885466DB8 /* Pods-defaults-Rocket.Chat.release.xcconfig */,
|
||||
0A0A154901DFF7277ABA48FC /* Pods-defaults-RocketChatRN.debug.xcconfig */,
|
||||
DD34A9C7880B17A54E25088C /* Pods-defaults-RocketChatRN.release.xcconfig */,
|
||||
6B89A0C56BF3A44505DEAF83 /* Pods-defaults-ShareRocketChatRN.debug.xcconfig */,
|
||||
D18A75D6B09FE66EF4BA01D5 /* Pods-defaults-ShareRocketChatRN.release.xcconfig */,
|
||||
);
|
||||
path = Pods;
|
||||
sourceTree = "<group>";
|
||||
|
@ -597,10 +597,10 @@
|
|||
7ACD4853222860DE00442C55 /* JavaScriptCore.framework */,
|
||||
B37C79D9BD0742CE936B6982 /* libc++.tbd */,
|
||||
06BB44DD4855498082A744AD /* libz.tbd */,
|
||||
111F5EB407906D059A1348AC /* libPods-defaults-NotificationService.a */,
|
||||
EE0803F389AA8D1AFA4C89DC /* libPods-defaults-Rocket.Chat.a */,
|
||||
AB0FA32CE0788455453FBB0B /* libPods-defaults-RocketChatRN.a */,
|
||||
AA38524D073B37D626BDE9B2 /* libPods-defaults-ShareRocketChatRN.a */,
|
||||
FDA952B83D7FF30D4E2CFFEE /* libPods-defaults-NotificationService.a */,
|
||||
F4094FC013D693914C83D9F9 /* libPods-defaults-Rocket.Chat.a */,
|
||||
80E4A43655C6403863DE2A5B /* libPods-defaults-RocketChatRN.a */,
|
||||
B3053C7BCF6D30F47A868926 /* libPods-defaults-ShareRocketChatRN.a */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
|
@ -620,7 +620,7 @@
|
|||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "RocketChatRN" */;
|
||||
buildPhases = (
|
||||
360870C7BEEC4AB68A78E7B7 /* [CP] Check Pods Manifest.lock */,
|
||||
181C3F50E52A555C16CD2E6A /* [CP] Check Pods Manifest.lock */,
|
||||
7AA5C63E23E30D110005C4A7 /* Start Packager */,
|
||||
13B07F871A680F5B00A75B9A /* Sources */,
|
||||
13B07F8C1A680F5B00A75B9A /* Frameworks */,
|
||||
|
@ -629,8 +629,8 @@
|
|||
1EC6ACF422CB9FC300A41C61 /* Embed App Extensions */,
|
||||
1E1EA8082326CCE300E22452 /* ShellScript */,
|
||||
7AAE9EB32891A0D20024F559 /* Upload source maps to Bugsnag */,
|
||||
78E38FA4D1825ED629BD2F91 /* [CP] Embed Pods Frameworks */,
|
||||
6AFD4AAAB19CC45C5450D183 /* [CP] Copy Pods Resources */,
|
||||
7745CB138C0BC3AD3B6D903B /* [CP] Embed Pods Frameworks */,
|
||||
E5B15D44172706200C51E871 /* [CP] Copy Pods Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
|
@ -647,12 +647,12 @@
|
|||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 1EC6ACF322CB9FC300A41C61 /* Build configuration list for PBXNativeTarget "ShareRocketChatRN" */;
|
||||
buildPhases = (
|
||||
7F50400D836B1B9401EA0D46 /* [CP] Check Pods Manifest.lock */,
|
||||
B1DCC208CCABAFDD28BB094C /* [CP] Check Pods Manifest.lock */,
|
||||
1EC6ACAC22CB9FC300A41C61 /* Sources */,
|
||||
1EC6ACAD22CB9FC300A41C61 /* Frameworks */,
|
||||
1EC6ACAE22CB9FC300A41C61 /* Resources */,
|
||||
1EFE4DC322CBF36300B766B7 /* ShellScript */,
|
||||
BD67AF7A6313353EB149232C /* [CP] Copy Pods Resources */,
|
||||
B3292ED5BEB4511153175C8A /* [CP] Copy Pods Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
|
@ -667,11 +667,11 @@
|
|||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 1EFEB5A02493B6640072EDC0 /* Build configuration list for PBXNativeTarget "NotificationService" */;
|
||||
buildPhases = (
|
||||
C2A9EDE251DBF6D44DD0BDA4 /* [CP] Check Pods Manifest.lock */,
|
||||
B6250DEF970654F9559DF2A3 /* [CP] Check Pods Manifest.lock */,
|
||||
1EFEB5912493B6640072EDC0 /* Sources */,
|
||||
1EFEB5922493B6640072EDC0 /* Frameworks */,
|
||||
1EFEB5932493B6640072EDC0 /* Resources */,
|
||||
1DAF05E36DCAB8D4595F6B85 /* [CP] Copy Pods Resources */,
|
||||
F7473AD47B9C08D9A7503185 /* [CP] Copy Pods Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
|
@ -686,7 +686,7 @@
|
|||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 7AAB3E4F257E6A6E00707CF6 /* Build configuration list for PBXNativeTarget "Rocket.Chat" */;
|
||||
buildPhases = (
|
||||
1AD0E1505465EAF3048DBA31 /* [CP] Check Pods Manifest.lock */,
|
||||
6975FE71AEDEB40A25E5C9DF /* [CP] Check Pods Manifest.lock */,
|
||||
7AAB3E13257E6A6E00707CF6 /* Start Packager */,
|
||||
7AAB3E14257E6A6E00707CF6 /* Sources */,
|
||||
7AAB3E32257E6A6E00707CF6 /* Frameworks */,
|
||||
|
@ -695,8 +695,8 @@
|
|||
7AAB3E48257E6A6E00707CF6 /* Embed App Extensions */,
|
||||
7AAB3E4B257E6A6E00707CF6 /* ShellScript */,
|
||||
7A10288726B1D15200E47EF8 /* Upload source maps to Bugsnag */,
|
||||
68C166CF30687732759CE851 /* [CP] Embed Pods Frameworks */,
|
||||
654C29ACFC8C77B4A18EA8B0 /* [CP] Copy Pods Resources */,
|
||||
BAA9D97CDBBD81E491CA726F /* [CP] Embed Pods Frameworks */,
|
||||
BB580E163ADADB99974B9507 /* [CP] Copy Pods Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
|
@ -846,7 +846,7 @@
|
|||
shellPath = /bin/sh;
|
||||
shellScript = "export EXTRA_PACKAGER_ARGS=\"--sourcemap-output $TMPDIR/$(md5 -qs \"$CONFIGURATION_BUILD_DIR\")-main.jsbundle.map\"\nexport NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n";
|
||||
};
|
||||
1AD0E1505465EAF3048DBA31 /* [CP] Check Pods Manifest.lock */ = {
|
||||
181C3F50E52A555C16CD2E6A /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
|
@ -861,69 +861,13 @@
|
|||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-defaults-Rocket.Chat-checkManifestLockResult.txt",
|
||||
"$(DERIVED_FILE_DIR)/Pods-defaults-RocketChatRN-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
1DAF05E36DCAB8D4595F6B85 /* [CP] Copy Pods Resources */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-defaults-NotificationService/Pods-defaults-NotificationService-resources.sh",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/iosMath/mathFonts.bundle",
|
||||
);
|
||||
name = "[CP] Copy Pods Resources";
|
||||
outputPaths = (
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/mathFonts.bundle",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-NotificationService/Pods-defaults-NotificationService-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
1E1EA8082326CCE300E22452 /* ShellScript */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
|
@ -958,7 +902,7 @@
|
|||
shellPath = /bin/sh;
|
||||
shellScript = "export EXTRA_PACKAGER_ARGS=\"--sourcemap-output $TMPDIR/$(md5 -qs \"$CONFIGURATION_BUILD_DIR\")-main.jsbundle.map\"\nexport NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n";
|
||||
};
|
||||
360870C7BEEC4AB68A78E7B7 /* [CP] Check Pods Manifest.lock */ = {
|
||||
6975FE71AEDEB40A25E5C9DF /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
|
@ -973,146 +917,14 @@
|
|||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-defaults-RocketChatRN-checkManifestLockResult.txt",
|
||||
"$(DERIVED_FILE_DIR)/Pods-defaults-Rocket.Chat-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
654C29ACFC8C77B4A18EA8B0 /* [CP] Copy Pods Resources */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat-resources.sh",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/iosMath/mathFonts.bundle",
|
||||
);
|
||||
name = "[CP] Copy Pods Resources";
|
||||
outputPaths = (
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/mathFonts.bundle",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
68C166CF30687732759CE851 /* [CP] Embed Pods Frameworks */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat-frameworks.sh",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/hermes.framework/hermes",
|
||||
);
|
||||
name = "[CP] Embed Pods Frameworks";
|
||||
outputPaths = (
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat-frameworks.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
6AFD4AAAB19CC45C5450D183 /* [CP] Copy Pods Resources */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN-resources.sh",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/iosMath/mathFonts.bundle",
|
||||
);
|
||||
name = "[CP] Copy Pods Resources";
|
||||
outputPaths = (
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/mathFonts.bundle",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
78E38FA4D1825ED629BD2F91 /* [CP] Embed Pods Frameworks */ = {
|
||||
7745CB138C0BC3AD3B6D903B /* [CP] Embed Pods Frameworks */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
|
@ -1235,7 +1047,7 @@
|
|||
shellPath = /bin/sh;
|
||||
shellScript = "SOURCE_MAP=\"$TMPDIR/$(md5 -qs \"$CONFIGURATION_BUILD_DIR\")-main.jsbundle.map\" ../node_modules/@bugsnag/react-native/bugsnag-react-native-xcode.sh\n";
|
||||
};
|
||||
7F50400D836B1B9401EA0D46 /* [CP] Check Pods Manifest.lock */ = {
|
||||
B1DCC208CCABAFDD28BB094C /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
|
@ -1257,7 +1069,7 @@
|
|||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
BD67AF7A6313353EB149232C /* [CP] Copy Pods Resources */ = {
|
||||
B3292ED5BEB4511153175C8A /* [CP] Copy Pods Resources */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
|
@ -1313,7 +1125,7 @@
|
|||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-ShareRocketChatRN/Pods-defaults-ShareRocketChatRN-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
C2A9EDE251DBF6D44DD0BDA4 /* [CP] Check Pods Manifest.lock */ = {
|
||||
B6250DEF970654F9559DF2A3 /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
|
@ -1335,6 +1147,194 @@
|
|||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
BAA9D97CDBBD81E491CA726F /* [CP] Embed Pods Frameworks */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat-frameworks.sh",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/hermes.framework/hermes",
|
||||
);
|
||||
name = "[CP] Embed Pods Frameworks";
|
||||
outputPaths = (
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat-frameworks.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
BB580E163ADADB99974B9507 /* [CP] Copy Pods Resources */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat-resources.sh",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/iosMath/mathFonts.bundle",
|
||||
);
|
||||
name = "[CP] Copy Pods Resources";
|
||||
outputPaths = (
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/mathFonts.bundle",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
E5B15D44172706200C51E871 /* [CP] Copy Pods Resources */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN-resources.sh",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/iosMath/mathFonts.bundle",
|
||||
);
|
||||
name = "[CP] Copy Pods Resources";
|
||||
outputPaths = (
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/mathFonts.bundle",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
F7473AD47B9C08D9A7503185 /* [CP] Copy Pods Resources */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-defaults-NotificationService/Pods-defaults-NotificationService-resources.sh",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/iosMath/mathFonts.bundle",
|
||||
);
|
||||
name = "[CP] Copy Pods Resources";
|
||||
outputPaths = (
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/mathFonts.bundle",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-NotificationService/Pods-defaults-NotificationService-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
|
@ -1492,7 +1492,7 @@
|
|||
/* Begin XCBuildConfiguration section */
|
||||
13B07F941A680F5B00A75B9A /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = D15DA76143AD7A4D6E8BA4D0 /* Pods-defaults-RocketChatRN.debug.xcconfig */;
|
||||
baseConfigurationReference = 0A0A154901DFF7277ABA48FC /* Pods-defaults-RocketChatRN.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
APPLICATION_EXTENSION_API_ONLY = NO;
|
||||
|
@ -1548,7 +1548,7 @@
|
|||
};
|
||||
13B07F951A680F5B00A75B9A /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = D04D04B2EA8D88C19F091B19 /* Pods-defaults-RocketChatRN.release.xcconfig */;
|
||||
baseConfigurationReference = DD34A9C7880B17A54E25088C /* Pods-defaults-RocketChatRN.release.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
APPLICATION_EXTENSION_API_ONLY = NO;
|
||||
|
@ -1604,7 +1604,7 @@
|
|||
};
|
||||
1EC6ACBC22CB9FC300A41C61 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 4F33E4DA6CCD312106101066 /* Pods-defaults-ShareRocketChatRN.debug.xcconfig */;
|
||||
baseConfigurationReference = 6B89A0C56BF3A44505DEAF83 /* Pods-defaults-ShareRocketChatRN.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(EMBEDDED_CONTENT_CONTAINS_SWIFT)";
|
||||
APPLICATION_EXTENSION_API_ONLY = YES;
|
||||
|
@ -1672,7 +1672,7 @@
|
|||
};
|
||||
1EC6ACBD22CB9FC300A41C61 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 9AF8F9AFBBF71270CE75AF6D /* Pods-defaults-ShareRocketChatRN.release.xcconfig */;
|
||||
baseConfigurationReference = D18A75D6B09FE66EF4BA01D5 /* Pods-defaults-ShareRocketChatRN.release.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(EMBEDDED_CONTENT_CONTAINS_SWIFT)";
|
||||
APPLICATION_EXTENSION_API_ONLY = YES;
|
||||
|
@ -1740,7 +1740,7 @@
|
|||
};
|
||||
1EFEB59D2493B6640072EDC0 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = EC65E9A63DAB7D0BDF669DFA /* Pods-defaults-NotificationService.debug.xcconfig */;
|
||||
baseConfigurationReference = 8CAEA4511906BB1E01898414 /* Pods-defaults-NotificationService.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(EMBEDDED_CONTENT_CONTAINS_SWIFT)";
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
|
@ -1760,7 +1760,7 @@
|
|||
INFOPLIST_FILE = NotificationService/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
|
||||
MARKETING_VERSION = 4.41.0;
|
||||
MARKETING_VERSION = 4.42.0;
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG";
|
||||
|
@ -1777,7 +1777,7 @@
|
|||
};
|
||||
1EFEB59E2493B6640072EDC0 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = D6F1E6B6A6B836D26CEBE5B4 /* Pods-defaults-NotificationService.release.xcconfig */;
|
||||
baseConfigurationReference = 7B761BFAFBCDE593C2BAA688 /* Pods-defaults-NotificationService.release.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(EMBEDDED_CONTENT_CONTAINS_SWIFT)";
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
|
@ -1799,7 +1799,7 @@
|
|||
INFOPLIST_FILE = NotificationService/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
|
||||
MARKETING_VERSION = 4.41.0;
|
||||
MARKETING_VERSION = 4.42.0;
|
||||
MTL_FAST_MATH = YES;
|
||||
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.NotificationService;
|
||||
|
@ -1815,7 +1815,7 @@
|
|||
};
|
||||
7AAB3E50257E6A6E00707CF6 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 05D159ED244184CFD689E5A7 /* Pods-defaults-Rocket.Chat.debug.xcconfig */;
|
||||
baseConfigurationReference = D71FBB48FEF190385BF70D2C /* Pods-defaults-Rocket.Chat.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
APPLICATION_EXTENSION_API_ONLY = NO;
|
||||
|
@ -1869,7 +1869,7 @@
|
|||
};
|
||||
7AAB3E51257E6A6E00707CF6 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 2D1498938315CC290B97920B /* Pods-defaults-Rocket.Chat.release.xcconfig */;
|
||||
baseConfigurationReference = C7B49FFF390E777885466DB8 /* Pods-defaults-Rocket.Chat.release.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
APPLICATION_EXTENSION_API_ONLY = NO;
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>4.41.0</string>
|
||||
<string>4.42.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleURLTypes</key>
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
<key>CFBundlePackageType</key>
|
||||
<string>XPC!</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>4.41.0</string>
|
||||
<string>4.42.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>KeychainGroup</key>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "rocket-chat-reactnative",
|
||||
"version": "4.41.0",
|
||||
"version": "4.42.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"start": "react-native start",
|
||||
|
@ -100,7 +100,7 @@
|
|||
"react-native-device-info": "^10.3.0",
|
||||
"react-native-document-picker": "^8.1.2",
|
||||
"react-native-easy-grid": "^0.2.2",
|
||||
"react-native-easy-toast": "^1.2.0",
|
||||
"react-native-easy-toast": "1.2.0",
|
||||
"react-native-fast-image": "RocketChat/react-native-fast-image.git#bump-version",
|
||||
"react-native-file-viewer": "^2.1.4",
|
||||
"react-native-gesture-handler": "2.4.2",
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
diff --git a/node_modules/react-native-fast-image/RNFastImage.podspec b/node_modules/react-native-fast-image/RNFastImage.podspec
|
||||
index 54d8d5b..1dd5916 100644
|
||||
--- a/node_modules/react-native-fast-image/RNFastImage.podspec
|
||||
+++ b/node_modules/react-native-fast-image/RNFastImage.podspec
|
||||
@@ -16,6 +16,6 @@ Pod::Spec.new do |s|
|
||||
s.source_files = "ios/**/*.{h,m}"
|
||||
|
||||
s.dependency 'React-Core'
|
||||
- s.dependency 'SDWebImage', '~> 5.12.5'
|
||||
- s.dependency 'SDWebImageWebPCoder', '~> 0.8.4'
|
||||
+ s.dependency 'SDWebImage', '~> 5.17.0'
|
||||
+ s.dependency 'SDWebImageWebPCoder', '~> 0.13.0'
|
||||
end
|
Loading…
Reference in New Issue