Skip to content

chocofamilyme/choco-app

Repository files navigation

choco-app

Библиотека для взаимодействия веб-приложений с Choco SuperApp. Работает только в браузерном окружении.

Установка

npm install choco-app

Share

shareFile

Type: (base64: string, filename?: string, mime?: string) => void

Поделиться файлом формата Base64.

base64

Type: string Картинка в формате Base64.

filename

Type: string Название файла.

mime

Type: string Тип файла.

import { shareFile } from 'choco-app';

shareFile('data:image/png;base64', 'name', 'image/png');

shareImage

Type: (base64: string, filename?: string, mime?: string) => void

Поделиться картинкой формата Base64.

base64

Type: string Картинка в формате Base64.

filename

Type: string Название файла.

mime

Type: string Тип файла.

import { shareImage } from 'choco-app';

shareImage('data:image/png;base64', 'name', 'image/png');

shareText

Type: (text: string) => void

Поделиться текстом.

text

Type: string Передаваемый текст.

import { shareText } from 'choco-app';

shareText('Hello World!');

Остальное

clearCache

Type: () => void

Очищает кэш приложения.

import { clearCache } from 'choco-app';

clearCache();

backToApplication

Type: () => void

Выход из веб-приложения обратно в нативное.

import { backToApplication } from 'choco-app';

backToApplication();

applicationBecomeActive

Type: (callback: Function) => void

Принимает функцию, которую стоит выполнить при выходе приложения из фона.

callback

Type: Function Любая функция.

import { applicationBecomeActive } from 'choco-app';

applicationBecomeActive(() => console.log('Вышел из фона'));

hapticSelection

Type: () => void

Вызывает нативную вибрацию.

import { hapticSelection } from 'choco-app';

hapticSelection();

isLocationEnabled

Type: () => boolean

Доступна ли геопозиция при использовании приложения.

import { isLocationEnabled } from 'choco-app';

isLocationEnabled();

onKeyboardClosed

Type: (callback: Function) => void

Принимает функцию, которую стоит выполнить при закрытии клавиатуры.

callback

Type: Function Любая функция.

import { onKeyboardClosed } from 'choco-app';

onKeyboardClosed(() => console.log('Вышел из фона'));

reload

Type: () => void

Обновление страницы с передачей в query следующих параметров: track_id, code, device_id, session_id и т.д.

import { reload } from 'choco-app';

reload();

getRefferalCode

Type: () => Promise<IRefferalCode>

Получение реферального кода.

import { getRefferalCode } from 'choco-app';

getRefferalCode().then(code => console.log(`Реферальный код: ${code}`));

openQR

Type: () => Promise<string>

Нативное считывание QR-кода.

import { openQR } from 'choco-app';

openQR().then(text => console.log(`QR-код: ${text}`));

pay

Type: (deeplink: string) => Promise<'success' | 'closed'>

Вызов оплаты через deeplink.

deeplink

Type: string Ссылка на оплату в приложении.

import { pay } from 'choco-app';

pay('ссылка на оплату').then(status => {
    if (status === 'success') {
        console.log('Оплата прошла успешно')
    } else {
        console.log('Модальное окно оплаты закрыли')
    }
}));

requestGeoPermissionStatus

Type: () => Promise<GeoStatus>

Получение статуса геопозиции.

import { requestGeoPermissionStatus } from 'choco-app';

requestGeoPermissionStatus().then(status => {
    if (status === 'granted') {
        // Получить гео
    }
}));

authorize

Type: (clientId: string, type: 'code' | 'trackId', redirectUri?: string, state?: string) => Promise<string | undefined>

Авторизация пользователя по clientId. Если пользователь не авторизован в нативном приложении, откроется окно авторизации с вводом номера телефона и кода. В другом случае, метод сразу вернет ответ.

clientId

Type: string

Идентификатор вашего приложения.

type

Type: 'code' | 'trackId'

Тип авторизации.

redirectUri

Type: string

Используется, если авторизация через code. На этот адрес возвращается код авторизации. Необходимо получить доступы у дежурного.

state

Type: string

Случайная строка, которая вернется вместе с кодом авторизации, чтобы приложение смогло убедиться, что ответ пришел не от стороннего сервиса.

⚠️ Вызов метода по type='code': вернет ошибку, если авторизация по code отсутствует в нативном приложении. Необходимо сделать обработку на ошибку с message NOT_SUPPORTED.

⚠️ Обработка ошибок: В новых версиях приложения необходимо обрабатывать ошибки, отличные от NOT_SUPPORTED.

import { authorize } from 'choco-app';

// Авторизация по trackId
authorize('11111111', 'trackId').then(trackId => {
    if (trackId) {
        // Сделать запрос на авторизацию
    }
}));

// Авторизация по code
authorize('11111111', 'code')
    .then(code => {
        if (code) {
            // Сделать запрос на авторизацию
        }
    })
    .catch(error => {
        if (error.message === 'NOT_SUPPORTED') {
            // Показать ошибку или вызвать authorize с типом trackId
        }
    })

openBarcodeScanner

Type: (formats: BarcodeFormat[], instructions: string[], actionText?: string) => Promise<string | 'manual'>

Открывает сканер штрихкодов. Возвращает строку с результатом сканирования или 'manual', если пользователь открыл ручной ввод.

formats

Type: BarcodeFormat[]

Массив форматов штрихкодов, которые нужно сканировать. По-умолчанию ['EAN_13', 'EAN_8', 'CODE_128'].

instructions

Type: string[]

Массив инструкций, которые будут показаны пользователю. По-умолчанию пустой массив.

actionText

Type: string

Текст кнопки внутри сканера. Опциональный параметр.

import { openBarcodeScanner } from 'choco-app';
import { BarcodeFormat } from 'choco-app/dist/ts/enum';

openBarcodeScanner([BarcodeFormat.EAN_13, BarcodeFormat.EAN_8], ['Холодильник открыт', 'Возьмите товар', 'Наведите камеру на штрихкод'], 'Ввести штрихкод вручную').then(result => {
    if (result === 'manual') {
        // Показать ручной ввод
    } else {
        // Успешное сканирование, штрихкод в result
    }
}));

isCameraPermissionEnabled

Type: () => Promise<boolean>

Проверяет, есть ли разрешение на использование камеры.

import { isCameraPermissionEnabled } from 'choco-app';

isCameraPermissionEnabled().then(isEnabled => {
    if (isEnabled) {
        // Разрешение есть
    } else {
        // Разрешения нет
    }
}));

logAmplitudeEvent

Type: (event: string, body: unknown) => boolean

Логирует событие в Amplitude.

event

Type: string

Название ивента аналитики.

body

Свойства ивента.

import { logAmplitudeEvent } from 'choco-app';

logAmplitudeEvent('event', { data: 'data' });

getNotificationStatus

Type: () => Promise<NotificationStatus>

Получение статуса о разрешенности уведомлений.

Статусы бывают granted | notDetermined | denied

import { getNotificationStatus } from 'choco-app';

getNotificationStatus().then(status => {
    if (status === 'granted') {
        // Когда уведомлений разрешены
    }
}));

requestNotificationStatus

Type: () => Promise<NotificationStatus>

Запрос на статусы о разрешенности уведомлений. Когда у юзера не определен или заблочен, этот метод отправляет юзера в настройки приложения Choco в телефоне

Статусы бывают granted | notDetermined | denied

import { requestNotificationStatus } from 'choco-app';

requestNotificationStatus().then(status => {
    if (status === 'granted') {
        // Когда уведомлений разрешены
    }
});

toastNotify

Type: (body: NotifyBody | string, title?: string, message?: string) => void

Показывает нативное уведомление в приложении. Первым параметром принимает либо объект, либо строку, которая является типом NotifyType, вторым параметром может принять заголовок уведомления, а третьим сообщение.

NotifyType может быть 'success' | 'info' | 'warning' | 'error'. Объект NotifyBody состоит из type (по умолчанию - 'success'), title, message.

import { toastNotify } from 'choco-app';

toastNotify({
    type: 'success',
    title: 'Title',
    message: 'Some message'
});

toastNotify('error', 'Title', 'Some message');

logAppsflyerEvent

Type: (event: string, body: unknown) => boolean

Логирует событие в appsflyer.

event

Type: string

Название ивента appsflyer.

body

Свойства ивента.

import { logAppsflyerEvent } from 'choco-app';

logAppsflyerEvent('event', { ... });

openAppSettings

Type: () => void

Открывает настройки приложения ios/android.

import { openAppSettings } from 'choco-app';

openAppSettings();

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •