Skip to content

Commit 6bb897d

Browse files
authored
feat(v4): 4.0 Release - Updated designs, faster & smoother experience (#846)
1 parent ee21e93 commit 6bb897d

File tree

506 files changed

+26519
-14348
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

506 files changed

+26519
-14348
lines changed

.storybook/preview.tsx

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1-
import type { Preview } from '@storybook/react';
1+
import React from 'react';
2+
import { View } from 'react-native';
3+
import { GestureHandlerRootView } from 'react-native-gesture-handler';
4+
import { BottomSheetModalProvider } from '@gorhom/bottom-sheet';
5+
import { RefsProvider } from '../src/context/RefsContext';
26

3-
const preview: Preview = {
7+
const preview = {
48
parameters: {
59
controls: {
610
matchers: {
@@ -9,6 +13,23 @@ const preview: Preview = {
913
},
1014
},
1115
},
16+
17+
decorators: [
18+
(Story, { parameters }) => (
19+
<GestureHandlerRootView style={{ flex: 1 }}>
20+
<BottomSheetModalProvider>
21+
<RefsProvider>
22+
<View
23+
style={{
24+
flex: 1,
25+
}}>
26+
<Story />
27+
</View>
28+
</RefsProvider>
29+
</BottomSheetModalProvider>
30+
</GestureHandlerRootView>
31+
),
32+
],
1233
};
1334

1435
export default preview;

App.tsx

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,17 @@ if (!__DEV__) {
1616
if (__DEV__) {
1717
require('./ReactotronConfig');
1818
}
19-
2019
// Ref: https://dev.to/dannyhw/how-to-swap-between-react-native-storybook-and-your-app-p3o
21-
export default isStorybookEnabled
22-
? // eslint-disable-next-line
23-
require('./.storybook').default
24-
: !__DEV__
25-
? Sentry.wrap(App)
26-
: App;
20+
export default (() => {
21+
if (isStorybookEnabled === 'true') {
22+
// eslint-disable-next-line
23+
return require('./.storybook').default;
24+
}
25+
26+
if (!__DEV__) {
27+
return Sentry.wrap(App);
28+
}
29+
30+
console.log('Loading Development App');
31+
return App;
32+
})();

README.md

Lines changed: 19 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,24 @@
1-
<p align="center">
2-
<img src="https://s3.us-west-2.amazonaws.com/gh-assets.chatwoot.com/brand.svg" alt="Woot-logo" width="240">
3-
4-
<div align="center">Mobile app for chatwoot platform. Built with React Native</div>
5-
<div align="center">Chatwoot is an opensource alternative to Intercom, Zendesk, Drift, Crisp etc.</div>
6-
</p>
1+
<img src="https://user-images.githubusercontent.com/2246121/282256557-1570674b-d142-4198-9740-69404cc6a339.png#gh-light-mode-only" width="100%" alt="Chat dashboard dark mode"/>
2+
<img src="https://user-images.githubusercontent.com/2246121/282256632-87f6a01b-6467-4e0e-8a93-7bbf66d03a17.png#gh-dark-mode-only" width="100%" alt="Chat dashboard"/>
73

84
---
95

10-
<p align="center">
6+
# Chatwoot
7+
8+
Mobile app for chatwoot platform. Built with React Native and Expo.
9+
10+
<p>
1111
<a href="https://github.com/react-native-community/releases/blob/master/CHANGELOG.md"><img src="https://img.shields.io/github/package-json/dependency-version/chatwoot/chatwoot-mobile-app/react-native?color=%2361dafb" alt="Project Dependencies"></a>
12+
<img src="https://img.shields.io/github/package-json/dependency-version/chatwoot/chatwoot-mobile-app/expo?color=%2361dafb" alt="Expo">
1213
<img src="https://img.shields.io/discord/647412545203994635" alt="Discord">
1314
<a href="https://discord.gg/cJXdrwS"><img src="https://img.shields.io/badge/chat-Discord-violet?logo=discord" alt="Chat on Discord"></a>
1415
<a href="http://makeapullrequest.com"><img src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg" alt="Chat on Discord"></a>
1516
<img src="https://img.shields.io/github/license/chatwoot/chatwoot-mobile-app" alt="License">
1617
</p>
1718

18-
- **Supported Chatwoot version:** 2.16.0+
19-
- **Supported iOS versions**: 11+
20-
- **Supported Android versions**: 5.0+
19+
- **Supported Chatwoot version:** 3.13.0+
20+
- **Supported iOS versions**: 13.4+
21+
- **Supported Android versions**: 6.0+
2122

2223
## Features
2324

@@ -29,15 +30,6 @@
2930
- Assign statuses to your conversations
3031
... and more to come!
3132

32-
<p float="left">
33-
<img src=".github/conversation.png" alt="conversations" width="250">
34-
<img src=".github/chat.png" alt="chat" width="250">
35-
<img src=".github/details.png" alt="details"width="250">
36-
<img src=".github/filter.png" alt="filter" width="250">
37-
<img src=".github/notification.png" alt="notification"width="250">
38-
<img src=".github/settings.png" alt="settings"width="250">
39-
</p>
40-
4133
## Download Android/iOS application
4234

4335
<p >
@@ -56,21 +48,20 @@ To help with testing app updates before they're released, you can:
5648

5749
Sign up to be a beta tester
5850

59-
- [Android](https://play.google.com/apps/testing/com.chatwoot.app) - Open this link from your Android device
60-
- [iOS](https://testflight.apple.com/join/yQ4yoSx4) - Open this link from your iOS device
61-
51+
- [Android](https://play.google.com/apps/testing/com.chatwoot.app) - Open this link from your Android device
52+
- [iOS](https://testflight.apple.com/join/yQ4yoSx4) - Open this link from your iOS device
53+
6254
You can leave the Beta testing program at any time:
63-
- On Android, [click this link](https://play.google.com/apps/testing/com.chatwoot.app) while logged in with your Google Play email address used to opt-in for the Beta program, then click **Leave the program**.
55+
56+
- On Android, [click this link](https://play.google.com/apps/testing/com.chatwoot.app) while logged in with your Google Play email address used to opt-in for the Beta program, then click **Leave the program**.
6457
- On iOS, access the `Chatwoot` app page in TestFlight and click **Stop Testing**.
6558

6659
## Feedback & Contributing
6760

68-
Feel free to send us feedback on [Twitter](https://twitter.com/chatwootapp) or [file an issue](https://github.com/chatwoot/chatwoot-mobile-app/issues).
61+
Feel free to send us feedback on [X](https://x.com/chatwootapp) or [file an issue](https://github.com/chatwoot/chatwoot-mobile-app/issues).
6962

70-
If you wish to contribute, please take a quick look at the [CONTRIBUTING.md](https://www.chatwoot.com/docs/contributing-guide) and [SETUP_GUIDE.md](https://www.chatwoot.com/docs/contributing-guide/mobile-app/setup-guide).
71-
72-
If you want to self deploy the Chatwoot mobile app, please take a look at the [CUSTOM_RELEASE_GUIDE.md](https://www.chatwoot.com/docs/contributing-guide/mobile-app/custom-release-guide) guide.
63+
If you wish to contribute, please take a quick look at the [CONTRIBUTING.md](https://www.chatwoot.com/docs/contributing-guide/mobile-app/setup-guide).
7364

7465
If there's anything you'd like to chat about, please feel free to join our [Discord](https://discord.gg/cJXdrwS) chat!
7566

76-
_Chatwoot_ &copy; 2017-2023, Chatwoot Inc - Released under the MIT License.
67+
_Chatwoot_ &copy; 2017-2025, Chatwoot Inc - Released under the MIT License.

ReactotronConfig.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
import Reactotron from 'reactotron-react-native';
2+
// Don't remove this import, this is used by reactotron-redux only in dev mode
3+
import { reactotronRedux } from 'reactotron-redux';
24

35
const reactotron = Reactotron.useReactNative() // add all built-in react native plugins
6+
.use(reactotronRedux())
47
.connect(); //Don't forget about me!
58

6-
export default reactotron;
9+
export default reactotron;

__mocks__/@sentry/react-native.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
jest.mock('@sentry/react-native', () => ({
2+
captureException: jest.fn(),
3+
}));
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
jest.mock('reactotron-react-native');

__mocks__/reactotron-redux.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
jest.mock('reactotron-redux');

app.config.ts

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ export default ({ config }: ConfigContext): ExpoConfig => {
44
return {
55
name: 'Chatwoot',
66
slug: process.env.EXPO_PUBLIC_APP_SLUG || 'chatwoot-mobile',
7-
version: '1.10.52',
7+
version: '1.10.55',
88
orientation: 'portrait',
99
icon: './assets/icon.png',
1010
userInterfaceStyle: 'light',
@@ -31,6 +31,7 @@ export default ({ config }: ConfigContext): ExpoConfig => {
3131
entitlements: {
3232
'aps-environment': 'production',
3333
},
34+
associatedDomains: ['applinks:app.chatwoot.com'],
3435
},
3536
android: {
3637
adaptiveIcon: {
@@ -46,6 +47,21 @@ export default ({ config }: ConfigContext): ExpoConfig => {
4647
],
4748
// Please use the relative path to the google-services.json file
4849
googleServicesFile: process.env.EXPO_PUBLIC_ANDROID_GOOGLE_SERVICES_FILE,
50+
intentFilters: [
51+
{
52+
action: 'VIEW',
53+
autoVerify: true,
54+
data: [
55+
{
56+
scheme: 'https',
57+
host: 'app.chatwoot.com',
58+
pathPrefix: '/app/accounts/',
59+
pathPattern: '/*/conversations/*',
60+
},
61+
],
62+
category: ['BROWSABLE', 'DEFAULT'],
63+
},
64+
],
4965
},
5066
extra: {
5167
eas: {
@@ -74,11 +90,20 @@ export default ({ config }: ConfigContext): ExpoConfig => {
7490
[
7591
'expo-build-properties',
7692
{
93+
// https://github.com/invertase/notifee/issues/808#issuecomment-2175934609
94+
android: {
95+
compileSdkVersion: 34,
96+
targetSdkVersion: 34,
97+
extraMavenRepos: ['$rootDir/../../../node_modules/@notifee/react-native/android/libs'],
98+
},
7799
ios: {
78100
useFrameworks: 'static',
79101
},
80102
},
81103
],
82104
],
105+
androidNavigationBar: {
106+
backgroundColor: '#ffffff',
107+
},
83108
};
84109
};

firebase.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
"react-native": {
3-
"messaging_ios_auto_register_for_remote_messages": false
3+
"messaging_ios_auto_register_for_remote_messages": true
44
}
55
}

package.json

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@chatwoot/mobile-app",
3-
"version": "1.10.52",
3+
"version": "1.10.55",
44
"main": "expo/AppEntry.js",
55
"scripts": {
66
"start": "expo start",
@@ -10,6 +10,7 @@
1010
"test": "jest",
1111
"lint": "eslint .",
1212
"generate": "npx expo prebuild --clean",
13+
"generate:soft": "npx expo prebuild",
1314
"run:ios": "npx expo run:ios -d",
1415
"run:android": "npx expo run:android -d",
1516
"build:android:local": "dotenv -c -- eas build -p android --profile production --local",
@@ -27,6 +28,8 @@
2728
"storybook:android": "cross-env EXPO_STORYBOOK_ENABLED='true' expo android"
2829
},
2930
"dependencies": {
31+
"@alantoa/lightbox": "0.3.1",
32+
"@chatwoot/markdown-to-txt": "^2.0.4",
3033
"@chatwoot/react-native-widget": "^0.0.21",
3134
"@chatwoot/utils": "^0.0.25",
3235
"@gorhom/bottom-sheet": "^4.6.3",
@@ -44,12 +47,17 @@
4447
"@reduxjs/toolkit": "^1.9.5",
4548
"@sentry/react-native": "^5.24.3",
4649
"@shopify/flash-list": "^1.5.0",
50+
"@types/lodash": "^4.17.9",
4751
"axios": "^1.6.4",
52+
"camelcase": "^8.0.0",
53+
"camelcase-keys": "^7.0.2",
4854
"cross-env": "^7.0.3",
4955
"date-fns": "2.21.1",
5056
"expo": "~51.0.28",
5157
"expo-application": "~5.9.1",
58+
"expo-av": "~14.0.7",
5259
"expo-build-properties": "~0.12.5",
60+
"expo-constants": "^16.0.2",
5361
"expo-font": "~12.0.10",
5462
"expo-haptics": "~13.0.1",
5563
"expo-image": "~1.13.0",
@@ -58,42 +66,41 @@
5866
"expo-system-ui": "~3.0.7",
5967
"expo-web-browser": "~13.0.3",
6068
"i18n-js": "^3.8.0",
61-
"lodash.filter": "^4.6.0",
69+
"lodash": "^4.17.21",
6270
"lodash.groupby": "^4.6.0",
63-
"markdown-it": "^12.3.2",
6471
"moment": "^2.30.1",
65-
"prop-types": "^15.8.1",
6672
"react": "18.2.0",
6773
"react-hook-form": "^7.52.1",
6874
"react-native": "0.74.5",
69-
"react-native-animatable": "^1.3.3",
75+
"react-native-audio-recorder-player": "^3.6.11",
7076
"react-native-autoheight-webview": "^1.6.5",
7177
"react-native-controlled-mentions": "^2.2.5",
7278
"react-native-device-info": "^11.1.0",
7379
"react-native-document-picker": "^9.3.1",
80+
"react-native-file-viewer": "^2.1.5",
7481
"react-native-gesture-handler": "^2.17.1",
75-
"react-native-html-parser": "^0.1.0",
76-
"react-native-image-pan-zoom": "^2.1.12",
7782
"react-native-image-picker": "^7.1.2",
7883
"react-native-keyboard-controller": "^1.13.4",
79-
"react-native-linear-gradient": "^2.8.3",
8084
"react-native-markdown-display": "^7.0.0-alpha.2",
8185
"react-native-pager-view": "^6.2.1",
8286
"react-native-permissions": "^5.0.0",
8387
"react-native-reanimated": "^3.14.0",
84-
"react-native-render-html": "^6.3.4",
8588
"react-native-safe-area-context": "^4.10.8",
8689
"react-native-screens": "^3.32.0",
8790
"react-native-snackbar": "^2.6.2",
8891
"react-native-svg": "^15.4.0",
89-
"react-native-tab-view": "^3.5.2",
92+
"react-native-track-player": "^4.1.1",
9093
"react-native-webview": "^13.8.6",
9194
"react-redux": "^8.1.2",
95+
"reactotron-redux": "^3.1.10",
9296
"redux": "^4.2.1",
9397
"redux-persist": "^6.0.0",
98+
"rn-fetch-blob": "^0.12.0",
9499
"semver": "^7.6.3",
95100
"tailwindcss": "^3.4.12",
96-
"twrnc": "^4.5.1"
101+
"twrnc": "^4.5.1",
102+
"use-deep-compare-effect": "^1.8.1",
103+
"zeego": "^1.10.0"
97104
},
98105
"devDependencies": {
99106
"@babel/core": "^7.20.0",

0 commit comments

Comments
 (0)