@retter/rn-sdk
v0.6.8
Published
React Native Client sdk for retter.io
Keywords
Readme
Retter React Native SDK
React Native Client SDK for retter.io backend services.
Installation
Using npm:
npm install @retter/rn-sdkUsing yarn:
yarn add @retter/rn-sdkPeer Dependencies
This package requires the following peer dependencies to be installed in your React Native project:
npm install @react-native-async-storage/async-storage
# or
yarn add @react-native-async-storage/async-storageImportant: This package uses @react-native-async-storage/async-storage as a peer dependency. If you use a bare React Native project, head over to the installation documents of this package. https://react-native-async-storage.github.io/async-storage/docs/install
Additionally, install React Native Firebase packages:
npm install @react-native-firebase/app @react-native-firebase/auth @react-native-firebase/firestore
# or
yarn add @react-native-firebase/app @react-native-firebase/auth @react-native-firebase/firestoreNote: Follow the official setup guides for React Native Firebase (iOS and Android) after installing the packages.
Usage
Initialization
Clients should initialize with project id. Instances with same project id always be cached.
import Retter from '@retter/sdk'
const rio = Retter.getInstance(config: RetterClientConfig)
interface RetterClientConfig {
projectId: string
rootProjectId?: string
region?: RetterRegion
platform?: string
culture?: string
}projectId: Unique id of a project created in retter.io Console
region: Could be
euWest1oreuWest1Betaplatform: ios, android, web, ...
culture: tr, en-US, vs....
Authentication
Retter uses custom token to authenticate. This custom tokens can be given by an action or a cloud object.
await rio.authenticateWithCustomToken('{CUSTOM_TOKEN}')Authentication statuses can be listened. SDK will fire an event that clients can be subscribe on status change.
rio.authStatus.subscribe((event: RetterAuthChangedEvent) => {
//
})Event gives information about current auth status. Clients can check the authStatus to determine if they need to show login/register pages or not.
interface RetterAuthChangedEvent {
authStatus: RetterAuthStatus
identity?: string
uid?: string
message?: string
}
enum RetterAuthStatus {
SIGNED_IN = 'SIGNED_IN',
SIGNED_IN_ANONYM = 'SIGNED_IN_ANONYM',
SIGNED_OUT = 'SIGNED_OUT',
AUTH_FAILED = 'AUTH_FAILED',
}Cloud Objects
SDK will allow to use Retter Cloud Objects. Clients can subscribe realtime state changes, trigger cloud methods, ...
Firstly, a cloud object must be initilize with classId. Additional config options can be seen in interface below.
const cloudObject = await rio.getCloudObject(config: RetterCloudObjectConfig)
interface RetterCloudObjectConfig {
classId: string
key?: {
name: string
value: string
}
instanceId?: string
method?: string
headers?: {
[key: string]: string
}
queryStringParams?: {
[key: string]: string
}
body?: {
[key: string]: any
}
httpMethod?: 'get' | 'delete' | 'post' | 'put'
base64Encode?: boolean // default: true, only get requests
}State Subscription
Clients can be subscribe to realtime state (public, user and role states) changes. On first subscription, it gives current state.
cloudObject.state.public.subscribe((state: { [key: string]: any }) => {
//
})
cloudObject.state.user.subscribe((state: { [key: string]: any }) => {
//
})
cloudObject.state.role.subscribe((state: { [key: string]: any }) => {
//
})Method Calls
Any cloud method can be called via sdk. method parameter must be specified. Other parameters can be seen in interface below.
const response = await cloudObject.call(params: RetterCloudObjectCall)
interface RetterCloudObjectCall {
method: string
headers?: {
[key: string]: string
}
queryStringParams?: {
[key: string]: string
}
body?: {
[key: string]: any
}
httpMethod?: 'get' | 'delete' | 'post' | 'put' // default: post
base64Encode?: boolean // default: true, only get requests
retryConfig: {
delay?: number // 50ms
count?: number // 3
rate?: number // 1.5
}
}Call method will return a response with RetterCallResponse type includes data, status and headers.
Getting State
Clients also access state via method call.
const response = await cloudObject.getState(params: RetterCloudObjectRequest)
interface RetterCloudObjectRequest {
headers?: {
[key: string]: string
}
queryStringParams?: {
[key: string]: string
}
body?: {
[key: string]: any
}
httpMethod?: 'get' | 'delete' | 'post' | 'put'
}Get stae method will return a response with RetterCallResponse type includes data<RetterCloudObjectState>, status and headers.
Available Methods
Cloud objects available methods can be accessed on methods array/
const methods = cloudObject.methods: RetterCloudObjectMethod[]
interface RetterCloudObjectMethod {
tag?: string
name: string
sync?: boolean
readonly?: boolean
inputModel?: string
outputModel?: string
queryStringModel?: string
}Instance List
const instanceIds = await cloudObject.listInstances()