feat: initial commit
This commit is contained in:
169
src/utils/http.js
Normal file
169
src/utils/http.js
Normal 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
62
src/utils/permute.js
Normal 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
46
src/utils/token.js
Normal 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
23
src/utils/useStore.js
Normal 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;
|
||||
};
|
||||
Reference in New Issue
Block a user