UNPKG

@highloop/feedback-internal

Version:

95 lines (86 loc) 2.72 kB
import createFetch from 'fetch-retry'; import type { IData } from '../interfaces/data'; let fetch = createFetch(window.fetch); let defaultEndpoint = 'https://widget.onhighloop.com'; let defaultErrorText = 'Could not fetch widget'; export let sdk = { getWidget: async ( id: string, opts: { api?: string } ): Promise<{ data?: IData; error?: { message: string } }> => { try { let res = await fetch((opts.api || defaultEndpoint) + `/feedback/${id}`); if (!res.ok) { let error = await res.json(); return { data: null, error: { message: error.message || defaultErrorText } }; } let data = await res.json(); return { data }; } catch (e) { return { data: null, error: { message: defaultErrorText } }; } }, createSubmission: async ( id: string, data: { text?: string; path?: string; meta?: string; optionId?: string; stars?: number; screenshot?: string; }, opts: { api?: string } ): Promise<{ data?: { id: string; updateToken?: string }; error?: { message: string } }> => { try { let res = await fetch( (opts.api || defaultEndpoint) + `/feedback/${id}/submit?includeUpdateToken=true`, { method: 'post', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(data) } ); if (!res.ok) { let error = await res.json(); return { data: null, error: { message: error.message || defaultErrorText } }; } let resData = await res.json(); return { data: resData }; } catch (e) { return { data: null, error: { message: defaultErrorText } }; } }, updateSubmission: async ( id: string, data: { updateToken: string; text?: string; optionId?: string; stars?: number; finish?: boolean; screenshot?: string; }, opts: { api?: string } ): Promise<{ data?: { id: string; updateToken?: string }; error?: { message: string } }> => { try { let res = await fetch((opts.api || defaultEndpoint) + `/feedback/${id}/update`, { method: 'put', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(data) }); if (!res.ok) { let error = await res.json(); return { data: null, error: { message: error.message || defaultErrorText } }; } let resData = await res.json(); return { data: resData }; } catch (e) { return { data: null, error: { message: defaultErrorText } }; } } };