react-native-chatify
Version:
React native chat easy to use and integrate
126 lines (99 loc) • 4.76 kB
Markdown
# React Native Chatify
React Native Chatify is a lightweight and customizable chat UI library for React Native applications. It simplifies the process of building chat interfaces with reusable components and easy integration.
## Prerequisites
This project requires NodeJS (version 8 or later) and NPM.
[Node](http://nodejs.org/) and [NPM](https://npmjs.org/) are really easy to install.
To make sure you have them available on your machine,
## Getting Started
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.
## Installation
To install and set up the library, run:
```sh
$ npm install react-native-chatify
```
Or if you prefer using Yarn:
```sh
$ yarn add react-native-chatify
```
## Example
```javascript
import Chatify from "react-native-chatify";
const MyComponent = () => {
const [text, setText] = useState("");
const [messages, setMessages] = useState([
{
_id: 1,
user: { id: "123", name: "Test User 1" },
text: "Test1",
direction: "InBound",
},
{
_id: 2,
user: { id: "123", name: "Test User 2" },
text: "Test2",
direction: "OutBound",
},
]);
const onChange = (data) => {
setText(data);
};
const sendChat = () => {
const message = {
text: text,
user: {
id: "456",
name: "Test User 2",
},
direction: "OutBound",
};
setMessages((prevState) => [...prevState, message]);
};
return (
<Chatify
data={messages}
text={text}
title="Test User"
onSend={sendChat}
onTextChange={onChange}
theme={chatThemeConfig}
/>
);
};
```
## Props
| Prop | Type | Description | Default |
| --------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
| `data` | `Array` | An array of message objects. Each message should include `_id`, `text`, `createdAt`, and `user` object along with `direction` either "InBound" or "OutBound". | `[]` |
| `text` | `string` | Input field value | - |
| `text` | `Function` | A callback function for sending new messages. This function should update the `messages` state. | `-` |
| `onTextChange` | `Function` | A callback function that returns the text input value entered | `-` |
| `theme` | `Object ` | A theme object which takes the custom styling option for headers, input field, footer | `{}` |
| `onTextChange` | `Function` | A callback function that returns the text input value entered | `-` |
| `_renderHeader` | `Function` | A callback function that receives your custom header component, allowing you to replace the default header with your own design. | `-` |
| `_renderFooter` | `Function` | A callback function that receives your custom footer component, allowing you to replace the default footer with your own design.. | `-` |
### theme
```
const chatThemeConfig = {
avoidingView: {}, // Customize properties for keyboard avoiding view
header: {
backgroundColor: "red", // Styles for header
headerImage: {}, // Styles for the header image
headerIcon: {}, // Styles for icons within the header
headerIconLayout: {}, // Layout styles for icon arrangement in the header
headerTitle: {}, // Styles for the header title text
},
row: {
marginTop: 20, // Set margin for rows within the chat layout
},
footer: {
inputField: {}, // Customize the input field styles in the footer
footerIconLayout: {}, // Layout for icons in the footer
footerIcon: {}, // Styles for individual icons in the footer
},
};
```
## Authors
- **Maaz** - _Initial work_ - [Maazy](https://github.com/mmaazy03)
- **Maaz** - _Portfolio_ - [Maazy](https://portfolio-henna-one-63.vercel.app/)
## License
MIT License