EVA-Notify/src/service/index.ts

71 lines
1.4 KiB
TypeScript

import process from 'process';
/**
* State machine for request
*
* @example
*
* let former = this.state.rs;
* this.setState({
* rs: former.trans(true),
* })
*/
export class RequestState {
loading: boolean;
success: boolean;
constructor() {
this.loading = true;
this.success = false;
}
trans(success: boolean): RequestState {
if (this.loading) {
this.loading = false;
this.success = success;
} else {
console.error('calling trans on not loading state');
}
return this;
}
}
/**
* Get URL of backend
* @param path Relative path to base url, begins with `/`
* @returns Full url
*
* @example
*
* ``` tsx
* import { getUrl } from '@/service';
* import { Component, ReactNode } from 'react';
* import Taro from '@tarojs/taro';
*
* class Index extends Component {
* state = {
* testData: {},
* }
* componentDidMount(): void {
* Taro.request({
* url: getUrl('/testdata'),
* method: 'GET',
* }).then(res => {
* console.log(res.data);
* this.setState({ testData: res.data.data });
* });
* }
* render() { ... }
* }
* ```
*/
export function getUrl(path: string): string {
const baseUrl = process.env.TARO_APP_API;
// console.log('bu:', baseUrl);
if (baseUrl) {
return baseUrl + path;
} else {
console.log('env TARO_APP_API is undefined');
return '';
}
}