{"_id":"@cuongweallnet/rn-gifted-chat","_rev":"1-4e4371619114c2fa61fb0b4e1949757e","name":"@cuongweallnet/rn-gifted-chat","dist-tags":{"latest":"0.10.0"},"versions":{"0.10.0":{"name":"@cuongweallnet/rn-gifted-chat","version":"0.10.0","description":"The most complete chat UI for React Native","main":"lib/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/cuongweallnet/react-native-chat.git"},"keywords":["android","ios","react-native","react","react-component","messenger","message","chat"],"author":{"name":"Farid Safi"},"license":"MIT","bugs":{"url":"https://github.com/cuongweallnet/react-native-chat/issues"},"homepage":"https://github.com/cuongweallnet/react-native-chat#readme","scripts":{"config:dev":"json -I -f package.json -e 'this.main=\"node_modules/expo/AppEntry.js\"'","config:npm":"json -I -f package.json -e 'this.main=\"lib/index.js\"'","lint":"tslint --project .","tsc":"tsc --noEmit","build":"rm -rf lib/ && node_modules/.bin/tsc","test":"TZ=Europe/Paris jest --no-watchman","test:watch":"TZ=Europe/Paris jest --watch","test:coverage":"TZ=Europe/Paris jest --coverage","prepublishOnly":"yarn lint && yarn build && yarn test && yarn config:npm","postpublish":"yarn config:dev"},"jest":{"preset":"react-native","setupFiles":["./tests/setup.js"],"moduleFileExtensions":["js","jsx","json","ts","tsx"],"transform":{"^.+\\.(js|jsx|ts|tsx)$":"babel-jest"},"testMatch":["**/*.test.ts?(x)"],"modulePathIgnorePatterns":["<rootDir>/example","<rootDir>/example-expo","<rootDir>/example-slack-message"]},"devDependencies":{"@babel/core":"^7.1.2","@babel/preset-typescript":"^7.1.0","@types/jest":"24.0.16","@types/react":"^16.7.17","@types/react-native":"^0.57.19","@types/react-native-communications":"2.2.1","@types/react-native-video":"3.1.4","@types/react-test-renderer":"16.8.3","@types/uuid":"3.4.5","babel-core":"^7.0.0-bridge.0","babel-jest":"24.7.1","babel-preset-expo":"^5.0.0","expo":"^33.0.0","husky":"^3.0.0","jest-expo":"^33.0.0","json":"^9.0.6","prettier":"1.18.0","prop-types":"15.6.2","react":"16.5.1","react-native":"https://github.com/expo/react-native/archive/sdk-33.0.0.tar.gz","react-native-nav":"2.0.2","react-test-renderer":"16.5.1","tslint":"5.12.0","tslint-config-prettier":"1.17.0","typescript":"3.4.5"},"dependencies":{"@expo/react-native-action-sheet":"^3.0.0","expo-constants":"~5.0.1","expo-image-picker":"~5.0.2","expo-location":"~5.0.1","expo-permissions":"~5.0.1","moment":"^2.19.0","prop-types":"15.7.2","react-native-communications":"2.2.1","react-native-iphone-x-helper":"^1.2.0","react-native-lightbox":"^0.7.0","react-native-maps":"~0.24.0","react-native-parsed-text":"^0.0.20","react-native-video":"4.4.2","uuid":"3.3.0"},"peerDependencies":{"react":"*","react-native":"*","react-native-video":"*","moment":"*"},"husky":{"hooks":{"pre-commit":"yarn lint && yarn tsc"}},"directories":{"test":"tests"},"gitHead":"48577df905e1519ce4fef2e30e5711afcfbf470c","_id":"@cuongweallnet/rn-gifted-chat@0.10.0","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-kF7QZNyAzMgilXmLcMLtgnoAG1vaLa5iakKl3a5vkYa8KW7gfr/kSp52gQxrphOmebZFcsbZQI2wb3ZGVhezxA==","shasum":"3ca15131f9b470d81b919676e50380a817bcc2af","tarball":"https://registry.npmjs.org/@cuongweallnet/rn-gifted-chat/-/rn-gifted-chat-0.10.0.tgz","fileCount":74,"unpackedSize":241276,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdWRYUCRA9TVsSAnZWagAASgcP/iM9pB15dAyVn1MR7xXr\nWISXF4i+JfCKaob5PaxQkqr6CskU7AeqF+ZBTsFzmNAqhuPMRfxnunzPzi3y\n+8w8T+xgfsy5ZQVHvP7K+y0RFjbHZXJoQMHZr8E2dQaKIWUyWV36iQfIW3Li\nK+pN0HTk9brZyDiLiO3KW55b7DFSCu+/LZYj3kyOWfzWi0gP3utaktANa2o7\nISR+ZW/YghOAUn+DhY2LWKwFVaC/lwhUh7L1sBl0AzoeH5MFR8c2BXa4wwe4\nrw71XkMPpfChQrQbtT8VdYpMfoR8F5qrv9JngBU0Gt+cvJ7og5+gZIjZxDRT\nTSahNsYGS1iDvozGOTIVb59fkDiYBHO8kGBbwWOz0N4CZBV4wCj6vWHiPLgY\n5XJKMCgu2A74ww5ERL26yeXvL/1Ooky4jKUAsthvY0zo1YzyvEtGVQkbDMAS\nxLMgm2Yhz7Uh39lKj+KL87FV2MD22xnOUgPGz3SQaoaYhx7YdMQ95I6WfPp7\ni0kV7Z219Vx3FpmzlsVHNV/iPvCRJkT2M0lXPNs0dux+EYxaL4K7sUnf219x\n4HgyKre8V6RgNhMsTvJaZYZEkYLuWKHH53vapc8fRcZ3s+NC5mqdg0cpjTqa\n7Mk0VguKu6iqDRDGOy8kMnSCyIH2yuypZaKhbjFSm3aQ20ACx0+2HOKFV3ts\nYJYo\r\n=AcqE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCQ/TPMmt2FYtLrT1Tpwt6VjngqFyq2HYF3TurJ5cN8HAIgEBULsV9PVoU47yXSscDdTCUnpXjitL1yamscGNdiKdI="}]},"maintainers":[{"name":"cuongweallnet","email":"cuong@weallnet.com"}],"_npmUser":{"name":"cuongweallnet","email":"cuong@weallnet.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rn-gifted-chat_0.10.0_1566119443693_0.8932649168190179"},"_hasShrinkwrap":false}},"time":{"created":"2019-08-18T09:10:43.468Z","0.10.0":"2019-08-18T09:10:43.864Z","modified":"2022-04-05T02:12:22.856Z"},"maintainers":[{"name":"cuongweallnet","email":"cuong@weallnet.com"}],"description":"The most complete chat UI for React Native","homepage":"https://github.com/cuongweallnet/react-native-chat#readme","keywords":["android","ios","react-native","react","react-component","messenger","message","chat"],"repository":{"type":"git","url":"git+https://github.com/cuongweallnet/react-native-chat.git"},"author":{"name":"Farid Safi"},"bugs":{"url":"https://github.com/cuongweallnet/react-native-chat/issues"},"license":"MIT","readme":"<p align=\"center\" >\n<p align=\"center\" >\n   <a href=\"https://reactnative.gallery/FaridSafi/gifted-chat\">\n    <img alt=\"react-native-gifted-chat\" src=\"https://thumbs.gfycat.com/AbsoluteSadDobermanpinscher-size_restricted.gif\" width=\"260\" height=\"510\" />\n </a>\n\n</p>\n\n<h3 align=\"center\">\n  💬 Gifted Chat\n</h3>\n<p align=\"center\">\n  The most complete chat UI for React Native\n</p>\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/react-native-gifted-chat\">\n  <img alt=\"npm downloads\" src=\"https://img.shields.io/npm/dm/react-native-gifted-chat.svg\"/></a>\n  <a href=\"https://www.npmjs.com/package/react-native-gifted-chat\"><img alt=\"npm version\" src=\"https://badge.fury.io/js/react-native-gifted-chat.svg\"/></a>\n  <a href=\"https://greenkeeper.io/\"><img src=\"https://badges.greenkeeper.io/cuongweallnet/react-native-chat.svg\" alt=\"build\"></a>\n   <a href=\"https://reactnative.gallery/FaridSafi/gifted-chat\"><img src=\"https://img.shields.io/badge/reactnative.gallery-%F0%9F%8E%AC-green.svg\"/></a>\n\n</p>\n<p align=\"center\">\n  <a href=\"https://circleci.com/gh/cuongweallnet/react-native-chat\"><img src=\"https://circleci.com/gh/cuongweallnet/react-native-chat.svg?style=shield\" alt=\"build\"></a>\n  <a href=\"https://travis-ci.org/cuongweallnet/react-native-chat\"><img src=\"https://api.travis-ci.org/cuongweallnet/react-native-chat.svg\" alt=\"deployed\"></a>\n  <a title='License' href=\"https://github.com/cuongweallnet/react-native-chat/blob/master/LICENSE\" height=\"18\">\n    <img src='https://img.shields.io/badge/license-MIT-blue.svg' />\n  </a>\n</p>\n\n<p align=\"center\">\n  <img src=\"https://api.qrserver.com/v1/create-qr-code/?size=100x100&data=exp://expo.io/@xcarpentier/gifted-chat\">\n  <br>\n  <a href=\"https://snack.expo.io/@xcarpentier/gifted-chat\" target=\"_blank\"><i>demo</i></a>\n</p>\n\n## Sponsor\n\n<p align=\"center\">\n  <br/>\n  <a href=\"https://www.lereacteur.io\" target=\"_blank\">\n    <img src=\"https://raw.githubusercontent.com/cuongweallnet/react-native-chat/sponsor-lereacteur/media/logo_sponsor.png\">\n  </a>\n  <br>\n  <p align=\"center\">\n    Coding Bootcamp in Paris co-founded by Farid Safi\n  </p>\n  <a href=\"https://www.lereacteur.io\" target=\"_blank\">\n    <p align=\"center\">\n      Click to learn more\n    </p>\n  </a>\n</p>\n\n<p align=\"center\">\n  <br/>\n  <a href=\"https://getstream.io/chat/?utm_source=github&utm_medium=react-native-gifted-chat&utm_campaign=sponsorship\" target=\"_blank\">\n    <img src=\"https://i.imgur.com/oU7XYkk.png\">\n  </a>\n  <br>\n  <p align=\"center\">\n    Scalable <a href=\"https://getstream.io/chat/?utm_source=github&utm_medium=react-native-gifted-chat&utm_campaign=sponsorship\" target=\"_blank\">chat API/Server</a> written in Go\n  </p>\n  <p align=\"center\">\n    <a href=\"https://getstream.io/chat/get_started/?utm_source=github&utm_medium=react-native-gifted-chat&utm_campaign=sponsorship\" target=\"_blank\">API Tour</a> | <a href=\"https://dev.to/nickparsons/react-native-chat-with-chuck-norris-3h7m?utm_source=github&utm_medium=react-native-gifted-chat&utm_campaign=sponsorship\" target=\"_blank\">React Native Gifted tutorial</a>\n  </p>\n</p>\n\n## Features\n\n- _`react-native-web`able_ (ASAP: [#1284](https://github.com/cuongweallnet/react-native-chat/pull/1284))\n- Write with **TypeScript** (since 0.8.0)\n- Fully customizable components\n- Composer actions (to attach photos, etc.)\n- Load earlier messages\n- Copy messages to clipboard\n- Touchable links using [react-native-parsed-text](https://github.com/taskrabbit/react-native-parsed-text)\n- Avatar as user's initials\n- Localized dates\n- Multi-line TextInput\n- InputToolbar avoiding keyboard\n- Redux support\n- System message\n- Quick Reply messages (bot)\n\n## Dependency\n\n- Use version `0.2.x` for RN `>= 0.44.0`\n- Use version `0.1.x` for RN `>= 0.40.0`\n- Use version `0.0.10` for RN `< 0.40.0`\n\n## Installation\n\n- Using [npm](https://www.npmjs.com/#getting-started): `npm install react-native-gifted-chat --save`\n- Using [Yarn](https://yarnpkg.com/): `yarn add react-native-gifted-chat`\n\n## You have a question ?\n\n1. Please check this readme and may find a response\n1. Please ask on StackOverflow first: https://stackoverflow.com/questions/tagged/react-native-gifted-chat\n1. Find response on existing issues\n1. Try to keep issues for issues\n\n## Example\n\n```jsx\nimport React from 'react'\nimport { GiftedChat } from 'react-native-gifted-chat'\n\nclass Example extends React.Component {\n  state = {\n    messages: [],\n  }\n\n  componentWillMount() {\n    this.setState({\n      messages: [\n        {\n          _id: 1,\n          text: 'Hello developer',\n          createdAt: new Date(),\n          user: {\n            _id: 2,\n            name: 'React Native',\n            avatar: 'https://placeimg.com/140/140/any',\n          },\n        },\n      ],\n    })\n  }\n\n  onSend(messages = []) {\n    this.setState(previousState => ({\n      messages: GiftedChat.append(previousState.messages, messages),\n    }))\n  }\n\n  render() {\n    return (\n      <GiftedChat\n        messages={this.state.messages}\n        onSend={messages => this.onSend(messages)}\n        user={{\n          _id: 1,\n        }}\n      />\n    )\n  }\n}\n```\n\n## Advanced example\n\nSee [`example/App.js`](example/App.js) for a working demo!\n\n## \"Slack\" example\n\nSee the files in [`example-slack-message`](example-slack-message) for an example of how to override the default UI to make something that looks more like Slack -- with usernames displayed and all messages on the left.\n\n## Message object\n\n> e.g. Chat Message\n\n```js\n{\n  _id: 1,\n  text: 'My message',\n  createdAt: new Date(Date.UTC(2016, 5, 11, 17, 20, 0)),\n  user: {\n    _id: 2,\n    name: 'React Native',\n    avatar: 'https://facebook.github.io/react/img/logo_og.png',\n  },\n  image: 'https://facebook.github.io/react/img/logo_og.png',\n  // You can also add a video prop:\n  video: 'http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4',\n  // Any additional custom parameters are passed through\n}\n```\n\n> e.g. System Message\n\n```js\n{\n  _id: 1,\n  text: 'This is a system message',\n  createdAt: new Date(Date.UTC(2016, 5, 11, 17, 20, 0)),\n  system: true,\n  // Any additional custom parameters are passed through\n}\n```\n\n> e.g. Chat Message with Quick Reply options\n\nSee PR [#1211](https://github.com/cuongweallnet/react-native-chat/pull/1211)\n\n```ts\ninterface Reply {\n  title: string\n  value: string\n  messageId?: any\n}\n\ninterface QuickReplies {\n  type: 'radio' | 'checkbox'\n  values: Reply[]\n  keepIt?: boolean\n}\n```\n\n```js\n  {\n    _id: 1,\n    text: 'This is a quick reply. Do you love Gifted Chat? (radio) KEEP IT',\n    createdAt: new Date(),\n    quickReplies: {\n      type: 'radio', // or 'checkbox',\n      keepIt: true,\n      values: [\n        {\n          title: '😋 Yes',\n          value: 'yes',\n        },\n        {\n          title: '📷 Yes, let me show you with a picture!',\n          value: 'yes_picture',\n        },\n        {\n          title: '😞 Nope. What?',\n          value: 'no',\n        },\n      ],\n    },\n    user: {\n      _id: 2,\n      name: 'React Native',\n    },\n  },\n  {\n    _id: 2,\n    text: 'This is a quick reply. Do you love Gifted Chat? (checkbox)',\n    createdAt: new Date(),\n    quickReplies: {\n      type: 'checkbox', // or 'radio',\n      values: [\n        {\n          title: 'Yes',\n          value: 'yes',\n        },\n        {\n          title: 'Yes, let me show you with a picture!',\n          value: 'yes_picture',\n        },\n        {\n          title: 'Nope. What?',\n          value: 'no',\n        },\n      ],\n    },\n    user: {\n      _id: 2,\n      name: 'React Native',\n    },\n  }\n```\n\n## Props\n\n- **`messages`** _(Array)_ - Messages to display\n- **`text`** _(String)_ - Input text; default is `undefined`, but if specified, it will override GiftedChat's internal state (e.g. for redux; [see notes below](#notes-for-redux))\n- **`placeholder`** _(String)_ - Placeholder when `text` is empty; default is `'Type a message...'`\n- **`messageIdGenerator`** _(Function)_ - Generate an id for new messages. Defaults to UUID v4, generated by [uuid](https://github.com/kelektiv/node-uuid)\n- **`user`** _(Object)_ - User sending the messages: `{ _id, name, avatar }`\n- **`onSend`** _(Function)_ - Callback when sending a message\n- **`alwaysShowSend`** _(Bool)_ - Always show send button in input text composer; default `false`, show only when text input is not empty\n- **`locale`** _(String)_ - Locale to localize the dates\n- **`timeFormat`** _(String)_ - Format to use for rendering times; default is `'LT'`\n- **`dateFormat`** _(String)_ - Format to use for rendering dates; default is `'ll'`\n- **`isAnimated`** _(Bool)_ - Animates the view when the keyboard appears\n- **`loadEarlier`** _(Bool)_ - Enables the \"Load earlier messages\" button\n- **`onLoadEarlier`** _(Function)_ - Callback when loading earlier messages\n- **`isLoadingEarlier`** _(Bool)_ - Display an `ActivityIndicator` when loading earlier messages\n- **`renderLoading`** _(Function)_ - Render a loading view when initializing\n- **`renderLoadEarlier`** _(Function)_ - Custom \"Load earlier messages\" button\n- **`renderAvatar`** _(Function)_ - Custom message avatar; set to `null` to not render any avatar for the message\n- **`showUserAvatar`** _(Bool)_ - Whether to render an avatar for the current user; default is `false`, only show avatars for other users\n- **`showAvatarForEveryMessage`** _(Bool)_ - When false, avatars will only be displayed when a consecutive message is from the same user on the same day; default is `false`\n- **`onPressAvatar`** _(Function(`user`))_ - Callback when a message avatar is tapped\n- **`onLongPressAvatar`** _(Function(`user`))_ - Callback when a message avatar is long-pressed\n- **`renderAvatarOnTop`** _(Bool)_ - Render the message avatar at the top of consecutive messages, rather than the bottom; default is `false`\n- **`renderBubble`** _(Function)_ - Custom message bubble\n- **`renderSystemMessage`** _(Function)_ - Custom system message\n- **`onLongPress`** _(Function(`context`, `message`))_ - Callback when a message bubble is long-pressed; default is to show an ActionSheet with \"Copy Text\" (see [example using `showActionSheetWithOptions()`](https://github.com/cuongweallnet/react-native-chat/blob/master@%7B2017-09-25%7D/src/Bubble.js#L96-L119))\n- **`inverted`** _(Bool)_ - Reverses display order of `messages`; default is `true`\n- **`renderUsernameOnMessage`** _(Bool)_ - Indicate whether to show the user's username inside the message bubble; default is `false`\n- **`renderMessage`** _(Function)_ - Custom message container\n- **`renderMessageText`** _(Function)_ - Custom message text\n- **`renderMessageImage`** _(Function)_ - Custom message image\n- **`renderMessageVideo`** _(Function)_ - Custom message video\n- **`imageProps`** _(Object)_ - Extra props to be passed to the [`<Image>`](https://facebook.github.io/react-native/docs/image.html) component created by the default `renderMessageImage`\n- **`videoProps`** _(Object)_ - Extra props to be passed to the [`<Video>`](https://github.com/react-native-community/react-native-video) component created by the default `renderMessageVideo`\n- **`lightboxProps`** _(Object)_ - Extra props to be passed to the `MessageImage`'s [Lightbox](https://github.com/oblador/react-native-lightbox)\n- **`isCustomViewBottom`** _(Bool)_ - Determine wether renderCustomView is displayed before or after the text, image and video views; default is `false`\n- **`renderCustomView`** _(Function)_ - Custom view inside the bubble\n- **`renderDay`** _(Function)_ - Custom day above a message\n- **`renderTime`** _(Function)_ - Custom time inside a message\n- **`renderFooter`** _(Function)_ - Custom footer component on the ListView, e.g. `'User is typing...'`; see [example/App.js](example/App.js) for an example\n- **`renderChatFooter`** _(Function)_ - Custom component to render below the MessageContainer (separate from the ListView)\n- **`renderInputToolbar`** _(Function)_ - Custom message composer container\n- **`renderComposer`** _(Function)_ - Custom text input message composer\n- **`renderActions`** _(Function)_ - Custom action button on the left of the message composer\n- **`renderSend`** _(Function)_ - Custom send button; you can pass children to the original `Send` component quite easily, for example to use a custom icon ([example](https://github.com/cuongweallnet/react-native-chat/pull/487))\n- **`renderAccessory`** _(Function)_ - Custom second line of actions below the message composer\n- **`onPressActionButton`** _(Function)_ - Callback when the Action button is pressed (if set, the default `actionSheet` will not be used)\n- **`bottomOffset`** _(Integer)_ - Distance of the chat from the bottom of the screen (e.g. useful if you display a tab bar)\n- **`minInputToolbarHeight`** _(Integer)_ - Minimum height of the input toolbar; default is `44`\n- **`listViewProps`** _(Object)_ - Extra props to be passed to the messages [`<ListView>`](https://facebook.github.io/react-native/docs/listview.html); some props can't be overridden, see the code in `MessageContainer.render()` for details\n- **`textInputProps`** _(Object)_ - Extra props to be passed to the [`<TextInput>`](https://facebook.github.io/react-native/docs/textinput.html)\n- **`keyboardShouldPersistTaps`** _(Enum)_ - Determines whether the keyboard should stay visible after a tap; see [`<ScrollView>`](https://facebook.github.io/react-native/docs/scrollview.html) docs\n- **`onInputTextChanged`** _(Function)_ - Callback when the input text changes\n- **`maxInputLength`** _(Integer)_ - Max message composer TextInput length\n- **`parsePatterns`** _(Function)_ - Custom parse patterns for [react-native-parsed-text](https://github.com/taskrabbit/react-native-parsed-text) used to linkify message content (like URLs and phone numbers), e.g.:\n\n```js\n <GiftedChat\n   parsePatterns={(linkStyle) => [\n     { type: 'phone', style: linkStyle, onPress: this.onPressPhoneNumber },\n     { pattern: /#(\\w+)/, style: { ...linkStyle, styles.hashtag }, onPress: this.onPressHashtag },\n   ]}\n />\n```\n\n- **`extraData`** _(Object)_ - Extra props for re-rendering FlatList on demand. This will be useful for rendering footer etc.\n- **`minComposerHeight`** _(Object)_ - Custom min height of the composer.\n- **`maxComposerHeight`** _(Object)_ - Custom max height of the composer.\n\n* **`scrollToBottom`** _(Bool)_ - Enables the scrollToBottom Component (Default is false)\n* **`scrollToBottomComponent`** _(Function)_ - Custom Scroll To Bottom Component container\n* **`scrollToBottomOffset`** _(Integer)_ - Custom Height Offset upon which to begin showing Scroll To Bottom Component (Default is 200)\n* **`scrollToBottomStyle`** _(Object)_ - Custom style for Bottom Component container\n* **`alignTop`** _(Boolean)_ Controls whether or not the message bubbles appear at the top of the chat (Default is false - bubbles align to bottom)\n* **`onQuickReply`** _(Function)_ - Callback when sending a quick reply (to backend server)\n* **`renderQuickReplies`** _(Function)_ - Custom all quick reply view\n* **`quickReplyStyle`** _(StyleProp<ViewStyle>)_ - Custom quick reply view style\n* **`renderQuickReplySend`** _(Function)_ - Custom quick reply **send** view\n* **`shouldUpdateMessage`** _(Function)_ - Lets the message component know when to update outside of normal cases.\n\n## Imperative methods\n\n- `focusTextInput()` - Open the keyboard and focus the text input box\n\n## Notes for [Redux](https://github.com/reactjs/redux)\n\nThe `messages` prop should work out-of-the-box with Redux. In most cases this is all you need.\n\nIf you decide to specify a `text` prop, GiftedChat will no longer manage its own internal `text` state and will defer entirely to your prop.\nThis is great for using a tool like Redux, but there's one extra step you'll need to take:\nsimply implement `onInputTextChanged` to receive typing events and reset events (e.g. to clear the text `onSend`):\n\n```js\n<GiftedChat\n  text={customText}\n  onInputTextChanged={text => this.setCustomText(text)}\n  /* ... */\n/>\n```\n\n## Notes for Android\n\nIf you are using Create React Native App / Expo, no Android specific installation steps are required -- you can skip this section. Otherwise we recommend modifying your project configuration as follows.\n\n- Make sure you have `android:windowSoftInputMode=\"adjustResize\"` in your `AndroidManifest.xml`:\n\n  ```xml\n  <activity\n    android:name=\".MainActivity\"\n    android:label=\"@string/app_name\"\n    android:windowSoftInputMode=\"adjustResize\"\n    android:configChanges=\"keyboard|keyboardHidden|orientation|screenSize\">\n  ```\n\n- For **Expo**, there are at least 2 solutions to fix it:\n\n  - Wrap GiftedChat in a [`KeyboardAvoidingView`](https://facebook.github.io/react-native/docs/keyboardavoidingview). This should only be done for Android, as `KeyboardAvoidingView` may conflict with the iOS keyboard avoidance already built into GiftedChat, e.g.:\n```\n<View style={{ flex: 1 }}>\n   {\n      Platform.OS === 'android' ?\n         <KeyboardAvoidingView behavior=\"padding\">\n            <GiftedChat />\n         </KeyboardAvoidingView> :\n         <GiftedChat />\n   }\n</View>\n```\nIf you use React Navigation, additional handling may be required to account for navigation headers and tabs. `KeyboardAvoidingView`'s `keyboardVerticalOffset` property can be set to the height of the navigation header and [`tabBarOptions.keyboardHidesTabBar`](https://reactnavigation.org/docs/en/bottom-tab-navigator.html#bottomtabnavigatorconfig) can be set to keep the tab bar from being shown when the keyboard is up. Due to a [bug with calculating height on Android phones with notches](facebook/react-native#23693), `KeyboardAvoidingView` is recommended over other solutions that involve calculating the height of the window.\n  - adding an opaque background status bar on app.json (even though `android:windowSoftInputMode=\"adjustResize\"` is set internally on Expo's Android apps, the transulcent status bar causes it not to work): https://docs.expo.io/versions/latest/guides/configuration.html#androidstatusbar\n\n- If you plan to use `GiftedChat` inside a `Modal`, see [#200](https://github.com/cuongweallnet/react-native-chat/issues/200).\n\n## Notes for local development\n\n1. Install `yarn add -g expo-cli`\n2. `expo start`\n\n## Questions\n\n- [How can I set Bubble color for each user?](https://github.com/cuongweallnet/react-native-chat/issues/672)\n- [How can I pass style props to InputToolbar design and customize it's color and other styles properties?](https://github.com/cuongweallnet/react-native-chat/issues/662)\n- [How can I change the color of the message box?](https://github.com/cuongweallnet/react-native-chat/issues/640)\n- [Is there a way to manually dismiss the keyboard?](https://github.com/cuongweallnet/react-native-chat/issues/647)\n- [I want to implement a popover that pops right after clicking on a specific avatar,\n  what is the best implementation in this case and how?](https://github.com/cuongweallnet/react-native-chat/issues/660)\n- [Why TextInput is hidden on Android?](https://github.com/cuongweallnet/react-native-chat/issues/680#issuecomment-359699364)\n- [How to use renderLoading?](https://github.com/cuongweallnet/react-native-chat/issues/298)\n- [Can I use MySql to save the message?](https://github.com/cuongweallnet/react-native-chat/issues/738)\n\n## License\n\n- [MIT](LICENSE)\n\n## Author\n\nFeel free to ask me questions on Twitter [@FaridSafi](https://www.twitter.com/FaridSafi)!\n\n## Contributors\n\n- Kevin Cooper [cooperka](https://github.com/cooperka)\n- Kfir Golan [kfiroo](https://github.com/kfiroo)\n- Bruno Cascio [brunocascio](https://github.com/brunocascio)\n- Xavier Carpentier [xcarpentier](https://github.com/xcarpentier)\n- [more](https://github.com/cuongweallnet/react-native-chat/graphs/contributors)\n\n## Hire an expert!\nLooking for a ReactNative freelance expert with more than 12 years experience? Contact Xavier from his [website](https://xaviercarpentier.com)!\n\n\n<img src=\"https://api.keen.io/3.0/projects/5ae31b61c9e77c0001cc2093/events/pageviews?api_key=55301C3E5BAB217E90A5867113C02506CE20385CD6F4C9C1CCDD4671B1A9DE374C3DF9DEF70C0BB3F5A9C5CA4CB1CCCFAF25FC3ED9CF63FB83102456A6881EFBAECD1C7D9718EE5402752DD8F6FA2DEC4D844BCB17FE6262570DB447D9A8CED2&data=eyJ0aXRsZSI6ICJnYyJ9\" />\n","readmeFilename":"README.md"}