0.12.0 • Published 5 months ago
@wezard/halo-core v0.12.0
Halo Core
Table of Content
Installation
Firebase
Add Halo dependencies:
yarn add @wezard/halo-core @wezard/react-native-halo-firebase
Add Firebase dependencies:
yarn add @react-native-firebase/app @react-native-firebase/auth @react-native-firebase/firestore @react-native-firebase/storage
Setup Firebase following official guide.
Usage
Initialization
import { halo } from '@wezard/halo-core'
// ...
const initChat = () => {
halo.initialize('firebase')
}
Authentication and user creation
Halo Firebase needs to authenticate the user before they perform any action.
import { halo } from '@wezard/halo-core'
import auth from '@react-native-firebase/app'
// ...
const signUp = async () => {
try {
await auth().createUserWithEmailAndPassword(email, password)
const user = await halo.createUser({
firstName: 'Matteo',
lastName: 'Bianchi',
nickname: 'mattyb98',
image: 'https://avatar.com'
})
// save user data
} catch (error) {
// handle error
}
}
const signIn = async () => {
try {
const userCredentials = await auth().signInWithEmailAndPassword(email, password)
const user = await halo.getUser(userCredentials.user.uid)
// save user data
} catch (error) {
// handle error
}
}
Overview
User
method | return | description |
---|---|---|
getUser | UserDetails | get user info by user id |
createUser | UserDetails | create chat user reference |
updateUser | UserDetails | update chat user |
updateUserDeviceToken | void | update device token in order to receive notifications |
fetchUsers | void | register a callback triggered when a user is added o updated |
Agent
method | return | description |
---|---|---|
getAgent | AgentDetails | get agent info by agent id |
createUser | AgentDetails | create chat agent reference |
updateAgent | AgentDetails | update chat agent |
updateAgentDeviceToken | void | update device token in order to receive notifications |
Room
method | return | description |
---|---|---|
getRooms | RoomDetails[] | get rooms details collection with pagination |
getRoomDetails | RoomDetails | get room details |
createRoomWithUsers | RoomDetails | create private or group room object |
createRoomForAgents | RoomDetails | create an agent room based on a specific tag |
joinUser | RoomDetails | add a user to a group room |
joinAgent | RoomDetails | add an agent to an agent room, an agent must be added to the room in order to have write permissions |
removeUser | RoomDetails | remove a user from a group room |
sendTextMessage | MessageType.Any | send a message |
sendFileMessage | MessageType.Any | send a message with an attachement, it handles file upload |
sendFileMessageFromUrl | MessageType.Any | send a message with an attachement, it uses file url passed as argument to store file |
readMessage | void | mark message read for one user |
deleteMessage | void | delete message for all room users |
getRoomMedia | MessageType.MediaInfo[] | get room media filtered by content type |
fetchRooms | void | register a callback triggered when a room is added or updated |
fetchRoomsByAgent | void | register a callback triggered when a room with one or more tags is added or updated |
fetchMessages | void | register a callback triggered when messages are added to a room |
Create an Halo Module
In order to create an Halo Module, init a React Native library, you can use create-react-native-library.
Then add Halo dependency:
yarn add @wezard/halo-core
Now you have to implements IUser
, IAgent
and IRoom
interfaces:
user.ts
import { IUser } from '@wezard/halo-core'
export class User implements IUser {
// implements IUser methods
}
agent.ts
import { IAgent } from '@wezard/halo-core'
export class Agent implements IAgent {
// implements IAgent methods
}
room.ts
import { IRoom } from '@wezard/halo-core'
export class Room implements IRoom {
// implements IRoom methods
}
And create an index.ts
file that exports classes
export * from './agent'
export * from './room'
export * from './user'
0.11.0
5 months ago
0.12.0
5 months ago
0.10.0
5 months ago
0.9.0
5 months ago
0.8.1
5 months ago
0.8.0
5 months ago
0.8.2
5 months ago
0.7.0
5 months ago
0.6.0
5 months ago
0.5.1
10 months ago
0.5.0
11 months ago
0.4.1
11 months ago
0.4.0
11 months ago
0.3.3
1 year ago
0.3.2
1 year ago
0.3.1
1 year ago
0.3.0
1 year ago
0.2.0
1 year ago