feat: initial commit

This commit is contained in:
caturbgs
2021-12-09 09:01:39 +07:00
parent f8fdeefa22
commit f27ddcfe90
55 changed files with 16928 additions and 0 deletions

169
src/utils/http.js Normal file
View File

@@ -0,0 +1,169 @@
import superagent from "superagent";
import {appConfig} from "../config/app";
import {store} from "./useStore";
export const http = {
get: (url, opts = {}) => {
let req = superagent.get(appConfig.apiUrl + url);
if (store.token) {
req = req.set('Authorization', 'Bearer ' + store.token);
}
return req;
},
post: (url, opts) => {
let req = superagent.post(appConfig.apiUrl + url);
if (store.token) {
req = req.set('Authorization', 'Bearer ' + store.token);
}
return req;
},
put: (url, opts) => {
let req = superagent.put(appConfig.apiUrl + url);
if (store.token) {
req = req.set('Authorization', 'Bearer ' + store.token);
}
return req;
},
del: (url, opts) => {
let req = superagent.del(appConfig.apiUrl + url);
if (store.token) {
req = req.set('Authorization', 'Bearer ' + store.token);
}
return req;
},
upload: (file) => {
const request = superagent
.post(appConfig.apiUrl + '/files')
.attach('file', file);
return request;
},
uploadAntd: (args) => {
const file = args.file;
const request = http.upload(file);
request
.on('progress', event => {
args.onProgress(event);
})
.then(it => {
args.onSuccess(it);
}).catch(err => {
args.onError(err);
});
return request;
}
};
// import superagent from "superagent";
// import appConfig from "../Config/StaticVar";
// import { TokenUtil } from './token'
// import { navigationService } from './NavigationService'
// import { Alert } from 'react-native'
// import StaticVar from '../Config/StaticVar'
// import AsyncStorage from '@react-native-async-storage/async-storage'
// import FirebaseLib from '../Lib/FirebaseLib'
// let AuthIntercept = require('superagent-intercept')((err, res) => {
// if (res?.status === 403) {
// console.log("masuk sini ya")
// Alert.alert("Sesi Anda Telah Habis", "Sesi Anda Telah Habis, Harap Login Kembali.", [
// { text: "Oke", onPress: async () => {
// navigationService.reset('LoginScreen');
// await AsyncStorage.removeItem(StaticVar.DB_PROFILE)
// await FirebaseLib.signOut()
// }}
// ]);
// }
// });
// export const http = {
// get: (url, opts = {}) => {
// try{
// let req = superagent.get(appConfig.API_URL + url)
// .use(AuthIntercept)
// if (TokenUtil.accessToken) {
// req = req.set('Authorization', 'Bearer ' + TokenUtil.accessToken);
// }
// return req;
// }catch (e) {
// console.log(e, "error get superagent")
// throw e
// }
// },
// post: (url, opts) => {
// try{
// let req = superagent.post(appConfig.API_URL + url)
// .use(AuthIntercept)
// if (TokenUtil.accessToken) {
// req = req.set('Authorization', 'Bearer ' + TokenUtil.accessToken);
// }
// return req;
// }catch (e) {
// console.log(e, "error post superagent")
// throw e
// }
// },
// put: (url, opts) => {
// try{
// let req = superagent.put(appConfig.API_URL + url)
// .use(AuthIntercept)
// if (TokenUtil.accessToken) {
// req = req.set('Authorization', 'Bearer ' + TokenUtil.accessToken);
// }
// return req;
// }catch (e) {
// console.log(e, "error put superagent")
// throw e
// }
// },
// del: (url, opts) => {
// try{
// let req = superagent.del(appConfig.API_URL + url)
// .use(AuthIntercept)
// if (TokenUtil.accessToken) {
// req = req.set('Authorization', 'Bearer ' + TokenUtil.accessToken);
// }
// return req;
// }catch (e) {
// console.log(e, "error del superagent")
// throw e
// }
// },
// upload: (file) => {
// try{
// const request = superagent
// .post(appConfig.API_URL + '/v1/files')
// .use(AuthIntercept)
// .attach('file', file);
// return request;
// }catch (e) {
// console.log(e, "error upload superagent")
// throw e
// }
// },
// uploadAntd: (args) => {
// try{
// const file = args.file;
// const request = http.upload(file)
// .use(AuthIntercept)
// request
// .on('progress', event => {
// args.onProgress(event);
// })
// .then(it => {
// args.onSuccess(it);
// }).catch(err => {
// args.onError(err);
// });
// return request;
// }catch (e) {
// console.log(e, "error uploadAntd superagent")
// throw e
// }
// }
// };

62
src/utils/permute.js Normal file
View File

@@ -0,0 +1,62 @@
function k_combinations(set, k) {
var i, j, combs, head, tailcombs;
if (k > set.length || k <= 0) {
return [];
}
if (k == set.length) {
return [set];
}
if (k == 1) {
combs = [];
for (i = 0; i < set.length; i++) {
combs.push([set[i]]);
}
return combs;
}
combs = [];
for (i = 0; i < set.length - k + 1; i++) {
// head is a list that includes only our current element.
head = set.slice(i, i + 1);
// We take smaller combinations from the subsequent elements
tailcombs = k_combinations(set.slice(i + 1), k - 1);
// For each (k-1)-combination we join it with the current
// and store it to the set of k-combinations.
for (j = 0; j < tailcombs.length; j++) {
combs.push(head.concat(tailcombs[j]));
}
}
return combs;
}
function stringPermutations(str) {
let letters = str.split('')
, results = [[letters.shift()]]
while (letters.length) {
const currLetter = letters.shift()
let tmpResults = []
results.forEach(result => {
let rIdx = 0
while (rIdx <= result.length) {
const tmp = [...result]
tmp.splice(rIdx, 0, currLetter)
tmpResults.push(tmp)
rIdx++
}
})
results = tmpResults
}
return results
.map(letterArray => letterArray.join(''))
.filter((el, idx, self) => (self.indexOf(el) === idx))
.sort()
}
export function calculateCombination(text, n) {
return k_combinations(text.split(''), n).map(it => stringPermutations(it.join(''))).flat().filter((value, index, self) => {
return self.indexOf(value) === index;
});
}

46
src/utils/token.js Normal file
View File

@@ -0,0 +1,46 @@
export class TokenUtil {
static accessToken = null;
static refreshToken = null;
static loadToken() {
const accessToken = localStorage.getItem('access_token');
const refreshToken = localStorage.getItem('refresh_token');
if (accessToken) {
TokenUtil.setAccessToken(accessToken);
}
if (refreshToken) {
TokenUtil.setRefreshToken(refreshToken);
}
}
static persistToken() {
if (TokenUtil.accessToken != null) {
localStorage.setItem('access_token', TokenUtil.accessToken);
} else {
localStorage.removeItem('access_token');
}
if (TokenUtil.refreshToken != null) {
localStorage.setItem('refresh_token', TokenUtil.refreshToken);
} else {
localStorage.removeItem('refresh_token');
}
}
static setAccessToken(accessToken) {
TokenUtil.accessToken = accessToken;
}
static setRefreshToken(refreshToken) {
TokenUtil.refreshToken = refreshToken;
}
static clearAccessToken() {
TokenUtil.accessToken = null;
}
static clearRefreshToken() {
TokenUtil.accessToken = null;
}
}

23
src/utils/useStore.js Normal file
View File

@@ -0,0 +1,23 @@
import React from 'react';
import {Store} from "../store";
import {useLocalObservable} from "mobx-react-lite";
const storeContext = React.createContext(null);
export const store = new Store();
// store.authentication.loadToken();
export const StoreProvider = ({children}) => {
const localStore = useLocalObservable(() => {
return store;
});
return <storeContext.Provider value={localStore}>{children}</storeContext.Provider>
};
export const useStore = () => {
const store = React.useContext(storeContext);
if (!store) {
// throw new Error('useStore must be used within a StoreProvider.');
}
return store;
};