esoftplay-event
Version:
event module on esoftplay framework
262 lines (235 loc) • 9.41 kB
text/typescript
// // noPage
// // useLibs
// import { getAuth } from '@react-native-firebase/auth';
// import { get, getDatabase, onValue, ref, set } from '@react-native-firebase/database';
// import { collection, getCountFromServer, getDocs, getFirestore, orderBy, query, where } from '@react-native-firebase/firestore';
// import { EventTms_homeProperty } from 'esoftplay/cache/event/tms_home/import';
// import { LibCurl } from 'esoftplay/cache/lib/curl/import';
// import { LibObject } from 'esoftplay/cache/lib/object/import';
// import { LibToastProperty } from 'esoftplay/cache/lib/toast/import';
// import esp from 'esoftplay/esp';
// import useGlobalState from 'esoftplay/global';
// import { createTimeout, useInterval } from 'esoftplay/timeout';
// function getEventPath() {
// return "event" + (esp.isDebug("cc") ? "BBT" : "BBO")
// }
// function getRandomSuffix(time: number): number {
// return Number(time + "" + (Math.floor(Math.random() * 9000) + 1000))
// }
// export const eventIdQueue = useGlobalState(0)
// export const eventQueueConfig = useGlobalState<any>({})
// const state = useGlobalState(0)
// export const lastKeyInPages = useGlobalState<string[]>([])
// export const userIdKeyReplacer = useGlobalState<any>({})
// export default function useFirebaseSocket() {
// const [status] = state.useState()
// const isDirect = EventTms_homeProperty.state()
// function isInLocal(state: any[], code: string) {
// const encodedCode = encodeURIComponent(code)
// return state.findIndex(([url, post]) => (post.qr == encodedCode || post.user_qr == encodedCode)) == -1 ? false : true
// }
// const auth = () => {
// return getAuth()
// }
// const db = () => {
// return getDatabase()
// }
// const signInAnonym = () => { }
// // ini get yang di live
// async function _get(path: string, gate_id: string, onDone: (res: any) => void) {
// let hasDone = false
// if (isDirect.get()) {
// new LibCurl('gate_check/' + path + '?t=' + new Date().getTime(), { gate_id }, (res) => {
// hasDone = true
// onDone(res)
// }, (res) => {
// onDone(res)
// hasDone = true
// }, 1)
// return
// }
// get(ref(getDatabase(), path))
// .then((sn) => {
// hasDone = true
// if (sn.exists()) {
// onDone(sn.val())
// } else {
// onDone(null)
// }
// })
// .catch((e) => {
// // if (e && !hasDone) {
// // getBackup(path, (res) => {
// // if (res) {
// // onDone(res)
// // } else {
// // onDone(null)
// // }
// // })
// // }
// })
// }
// function listenChangeTime(merchant_id: string, callback: (params: any) => void): () => void {
// const onChildChange = onValue(ref(getDatabase(), 'merchant_offline/' + merchant_id), (sn) => {
// if (sn.exists()) {
// callback(sn.val());
// }
// })
// return () => onChildChange
// }
// async function _set(path: string, data: any, onDone?: (res: any) => void) {
// const timeout = createTimeout()
// if (state.get() == 1)
// set(ref(getDatabase(), path), data)
// else
// timeout.set(() => {
// _set(path, data,)
// timeout.clear()
// }, 300);
// }
// function path(...paths: any[]): string {
// return paths.join('/')
// }
// function addQueue(path: string, event_id: string, onSuccess?: () => void) {
// const instance: any = esp.mod("firestore/index")().instance()
// const db = getFirestore(instance)
// if (userIdKeyReplacer.get()?.priority == 1) {
// const coll = collection(db, [getEventPath(), path, event_id].join('/'));
// const q = query(coll, orderBy('t', 'asc'), where("t", "==", userIdKeyReplacer.get().t));
// getDocs(q).then((doc) => {
// if (doc.size == 0) {
// LibToastProperty.show(esp.lang("event/firebase_socket", "priority_queue_used"))
// userIdKeyReplacer.set(LibObject.set(userIdKeyReplacer.get(), 0)('priority'))
// addQueue(path, event_id, onSuccess)
// } else if (doc.size == 1) {
// // console.log("SIJI")
// doc.forEach((d) => {
// userIdKeyReplacer.set(LibObject.set(userIdKeyReplacer.get(), d.id)('id'))
// updateQueueExp(path, event_id)
// new LibCurl('event_booking_waiting_allotment_use', { event_id: event_id })
// if (onSuccess) onSuccess?.()
// })
// } else {
// LibToastProperty.show("Antrian lebih dari 1", doc.size)
// }
// // console.log("SIZE", doc.size)
// })
// } else {
// // console.log("ora")
// if (userIdKeyReplacer.get()?.id)
// esp.mod("firestore/index")().deleteDocument?.(instance, [getEventPath?.(), path, event_id, userIdKeyReplacer.get()?.id], () => { }, (e) => { })
// const ctime = getDateTimebyGmt7().getTime()
// const time = getRandomSuffix(ctime)
// const data = { t: ctime, s: time }
// // console.log(data)
// esp.mod("firestore/index")().addCollection?.(instance, [getEventPath?.(), path, event_id], data, (dt) => {
// // console.log("KENE",)
// userIdKeyReplacer.set?.({
// id: dt?.id,
// ...data
// })
// if (onSuccess) onSuccess?.()
// }, (err) => {
// // console.log(err)
// })
// }
// }
// function getDateTimebyGmt7() {
// const ori = new Date()
// // const gmt = setTimeOffset(ori)
// return ori
// }
// // get weather function
// function getQueue(path: string, event_id: string, _limit: number, cb: (idx: number, key: string) => void) {
// const instance: any = esp.mod("firestore/index")().instance()
// const db = getFirestore(instance)
// const coll = collection(db, [getEventPath(), path, event_id].join('/'));
// const q = query(coll, orderBy('s', 'asc'), where("s", "<", userIdKeyReplacer.get().s));
// getCountFromServer(q).then((v) => {
// cb(v.data().count, userIdKeyReplacer.get().id)
// }).catch((e) => {
// getQueue(path, event_id, _limit, cb)
// console.log({ e })
// })
// // /* cleanup */
// // const cdate = getDateTimebyGmt7().getTime()
// // if (!cdate) {
// // LibToastProperty.show(esp.lang("lib/firebase_socket", "something_wrong_1"))
// // return
// // }
// // if (!_limit) {
// // LibToastProperty.show(esp.lang("lib/firebase_socket", "something_wrong_2"))
// // return
// // }
// // if (!userIdKeyReplacer?.get()?.s) {
// // LibToastProperty.show(esp.lang("lib/firebase_socket", "something_wrong_3"))
// // return
// // }
// // const exp = query(collection(instance, [getEventPath(), path, event_id].join('/')), where("t", "<", cdate - _limit), orderBy('t', 'asc'), limit(10));
// // const batch = writeBatch(instance);
// // getDocs(exp).then((expd) => {
// // expd.forEach((doc) => {
// // if (Number(doc.data().s) < Number(userIdKeyReplacer.get().s))
// // batch.delete(doc.ref)
// // // console.log(doc.data().t < cdate - limit, doc.data().t, cdate - limit, cdate - limit - doc.data().t)
// // // console.log('->' + moment(new Date(Number(doc.data().t))).localeFormat('DD MMMM YYYY HH:mm:ss'))
// // // console.log('-->' + moment(new Date(cdate - limit)).localeFormat('DD MMMM YYYY HH:mm:ss') + '\n\n')
// // })
// // batch.commit()
// // })
// // /* end cleanup */
// }
// function updateQueueExp(path: string, event_id: string) {
// const instance: any = esp.mod("firestore/index")().instance()
// esp.mod("firestore/index")().updateDocument(instance, [getEventPath(), path, event_id, userIdKeyReplacer.get().id], [{ key: 't', value: getDateTimebyGmt7().getTime() }], () => { }, (e) => {
// // updateQueueExp(path, event_id, key)
// })
// }
// function doneQueue(path: string, event_id: string, key: string, cb: Function) {
// if (key) {
// const instance: any = esp.mod("firestore/index")().instance()
// esp.mod("firestore/index")().deleteDocument(instance, [getEventPath(), path, event_id, key], () => {
// cb()
// userIdKeyReplacer.reset()
// }, (e) => {
// console.warn(e)
// })
// }
// }
// function isInPricingQueueConfig(event_id: string) {
// return eventQueueConfig.get(event_id) && eventQueueConfig.get(event_id).limit > 0
// }
// function useQueueConfigListener() {
// function action() {
// fetch(esp.config("events", "queue") + "?t=" + new Date().getTime(), { "method": "GET" })
// .then(res => res.json())
// .then((re) => {
// eventQueueConfig.set(re)
// })
// }
// const timeout = useInterval()
// action()
// timeout(() => {
// action()
// }, 10000)
// }
// return {
// status,
// auth,
// db,
// signInAnonymously: signInAnonym,
// get: _get,
// set: _set,
// isInLocal,
// // getQueueConfig,
// isInPricingQueueConfig,
// useQueueConfigListener,
// // isInBookingQueueConfig,
// addQueue,
// getQueue,
// doneQueue,
// updateQueueExp,
// listenChangeTime,
// path
// }
// }