import { defineStore } from 'pinia' import { IFriends, IMsgGlobParam, ISigninOptions, ISignupOptions, IUserFields, IUserNotifType, IUserProfile, IUserState, } from '@src/model' import { tools } from '@store/Modules/tools' import translate from '@src/globalroutines/util' import { ICallResult, ILinkReg, IResult, IToken } from '@model/other' import * as Types from '@src/store/Api/ApiTypes' import { useGlobalStore } from '@store/globalStore' import { serv_constants } from '@store/Modules/serv_constants' import { Api } from '@api' import { toolsext } from '@store/Modules/toolsext' import { static_data } from '@src/db/static_data' import bcrypt from 'bcryptjs' import { useTodoStore } from '@store/Todos' import { Router } from 'vue-router' import { useProjectStore } from '@store/Projects' import { shared_consts } from '@/common/shared_vuejs' import { costanti } from '@costanti' import { IMyGroup } from '@model/UserStore' export const DefaultUser: IUserFields = { _id: '', email: '', username: '', name: '', surname: '', password: '', tokens: [], verified_email: false, verified_by_aportador: false, aportador_solidario: '', made_gift: false, profile: { img: '', teleg_id: 0, saw_zoom_presentation: false, ask_zoom_partecipato: false, saw_and_accepted: false, qualified: false, qualified_2invitati: false, socio: false, socioresidente: false, myshares: [], friends: [], req_friends: [], mygroups: [], manage_mygroups: [], asked_friends: [], asked_groups: [], notifs: [], }, cart: { userId: '', items: [], totalPrice: 0, department: '', totalQty: 0, note: '', }, } export const DefaultProfile: IUserProfile = { img: '', nationality: '', intcode_cell: '', cell: process.env.TEST_CELL || '', dateofbirth: null, sex: 0, country_pay: '', email_paypal: '', payeer_id: '', advcash_id: '', revolut: '', link_payment: '', note_payment: '', username_telegram: '', teleg_id: 0, teleg_checkcode: 0, my_dream: '', manage_telegram: false, saw_zoom_presentation: false, ask_zoom_partecipato: false, saw_and_accepted: false, socio: false, socioresidente: false, paymenttypes: [], qualified: false, qualified_2invitati: false, myshares: [], friends: [], req_friends: [], mygroups: [], manage_mygroups: [], asked_friends: [], asked_groups: [], notifs: [], } export const useUserStore = defineStore('UserStore', { state: () => ({ my: { ...DefaultUser }, groups: [], lang: process.env.LANG_DEFAULT ? process.env.LANG_DEFAULT : 'it', repeatPassword: '', categorySel: 'personal', servercode: 0, resStatus: 0, x_auth_token: '', isLogged: false, isAdmin: false, isManager: false, isDepartment: false, isTutor: false, isZoomeri: false, isTratuttrici: false, isEditor: false, isTeacher: false, usersList: [], countusers: 0, lastparamquery: {}, }), getters: { isServerError(): boolean { return (this.servercode === toolsext.ERR_SERVERFETCH) }, getServerCode: (state: IUserState): number => (state.servercode ? state.servercode : 0), getMsg: (state: IUserState): string => (state.msg ? state.msg : ''), getUsersList: (mystate: IUserState) => { return mystate.usersList }, IsMyFriend: (mystate: IUserState) => (userIdOwner: string): boolean => { // ++TODO Check if userIdOwner is my friend // userIdOwner is my friend ? return true }, IsMyGroup: (mystate: IUserState) => (userIdOwner: string): boolean => { // ++TODO Check if userIdOwner is on my groups // userIdOwner is on my groups ? return true }, isTokenInvalid: (state: IUserState) => { try { return (state.my.tokens!.length <= 0) } catch (e) { return true } }, isUserInvalid: (state: IUserState): boolean => { try { return (state.my._id === undefined) || (state.my._id.trim() === '') } catch (e) { return true } }, }, actions: { IsMyFriendByUsername(username: string): boolean { if (this.my.profile.friends) return this.my.profile.friends.findIndex((rec) => rec.username === username) >= 0 else return false }, IsMyGroupByGroupname(groupname: string): boolean { if (this.my.profile.mygroups) return this.my.profile.mygroups.findIndex((rec) => rec.groupname === groupname) >= 0 else return false }, IsAskedFriendByUsername(username: string): boolean { if (this.my.profile.asked_friends) return this.my.profile.asked_friends.findIndex((rec) => rec.username === username) >= 0 else return false }, IsReqFriendByUsername(username: string): boolean { if (this.my.profile.req_friends) return this.my.profile.req_friends.findIndex((rec) => rec.username === username) >= 0 else return false }, IsAskedGroupByGroupname(groupname: string): boolean { if (this.my.profile.asked_groups) return this.my.profile.asked_groups.findIndex((rec: IMyGroup) => rec.groupname === groupname) >= 0 else return false }, getUserByUsername(username: string): IUserFields | null { // Check if is this User! if (this.my.username === username) return this.my let trovato:any = null if (this.usersList) trovato = this.usersList.find((item: any) => item.username === username) if (trovato) { if (trovato.surname === 'undefined') trovato.surname = '' if (trovato.name === 'undefined') trovato.name = '' } return (trovato) || null }, getImgByUsername(username: string): string { if (username === '') return '' // Check if is this User! const myrec = this.getUserByUsername(username) // console.log('myrec', myrec) if (myrec && myrec.profile && !!myrec.profile.img && myrec.profile.img !== '' && myrec.profile.img !== 'undefined') { return costanti.DIR_UPLOAD + 'profile/' + this.my.username + '/' + myrec.profile.img } return '' }, getImgUserByUsername(username: string): string { let img = this.getImgByUsername(username) return img ? img : 'images/noimg-user.svg' }, getImgByProfile(userparam: IUserFields, reale: any = false): string { try { if (userparam.profile && userparam.profile.img) { return costanti.DIR_UPLOAD + 'profile/' + userparam.username + '/' + userparam.profile.img } } catch (e) { } if (!reale) return 'images/noimg.png' else return '' }, getImgByGroup(group: IMyGroup): string { try { //++Todo: Sistemare! return costanti.DIR_UPLOAD + 'mygroups/' + group.groupname + '/' + group.photos[0].imagefile } catch (e) { } return 'images/noimg.png' }, getRefLink(username: string): string { if (username === '') username = this.my.username return tools.getUrlSite() + '/signup/' + username }, isUserOk(): boolean { return this.my.profile.teleg_id! > 0 && this.my.verified_by_aportador! && this.isUsernameTelegOk() // return this.my.verified_email! && this.my.profile.teleg_id! > 0 && this.my.verified_by_aportador! }, isOldRegNotFinished(): boolean { return (!this.my.profile.teleg_id || this.my.profile.teleg_id <= 0) || !this.isUsernameTelegOk() // return this.my.verified_email! && this.my.profile.teleg_id! > 0 && this.my.verified_by_aportador! }, isTelegOk(): boolean { return this.my.profile.teleg_id! > 0 // return this.my.verified_email! && this.my.profile.teleg_id! > 0 && this.my.verified_by_aportador! }, isUsernameTelegOk(): boolean { return !!this.my.profile.username_telegram // return this.my.verified_email! && this.my.profile.teleg_id! > 0 && this.my.verified_by_aportador! }, getNameSurnameByUserId(userId: string): string { const user = this.getUserByUserId(userId) if (user) return `${user.name} ` + !!user.surname ? user.surname : '' return `(${userId})` }, getNameSurnameByUsername(username: string): string { let user = this.getUserByUsername(username) if (user) return `${user.name} ` + !!user.surname ? user.surname : '' return `(${username})` }, getUserByUserId(userId: string): IUserFields | null { // Check if is this User! if (this.my._id === userId) return this.my let trovato:any = null if (this.usersList) trovato = this.usersList.find((item: any) => item._id === userId) if (trovato) { if (trovato.surname === undefined) trovato.surname = '' if (trovato.name === undefined) trovato.name = '' } return (trovato) || null }, getMsgError(err: number): string { let msgerrore = '' if (err !== tools.OK) { msgerrore = `Error [${this.servercode}]: ` if (this.servercode === toolsext.ERR_SERVERFETCH) { msgerrore = translate('fetch.errore_server') } else { msgerrore = translate('fetch.errore_generico') } if (process.env.DEV) { console.log('ERROREEEEEEEEE: ', msgerrore, ' (', err, ')') } } // return { code: this.servercode, msg: msgerrore } return msgerrore }, clearAuthData() { this.my = DefaultUser // resetArrToken(mystate.my.tokens) this.categorySel = 'personal' this.servercode = 0 this.resStatus = 0 this.isLogged = false this.x_auth_token = '' return true }, async resetpwd(paramquery: any) { const mydata = { ...paramquery } return bcrypt.hash(mydata.password, bcrypt.genSaltSync(12)) .then((hashedPassword: string) => { mydata.repeatPassword = '' mydata.password = String(hashedPassword) return Api.SendReq('/updatepwd', 'POST', mydata, true) .then((res) => { return { code: res.data.code, msg: res.data.msg } }) .catch((error: Types.AxiosError) => { this.setErrorCatch(error) return { code: this.getServerCode, msg: error.getMsgError() } }) }) }, setErrorCatch(axerr: Types.AxiosError) { try { if (this.servercode !== toolsext.ERR_SERVERFETCH) { this.servercode = axerr.getCode() } // this.msg = axerr.getMsg() console.log('Err catch: (servercode:', axerr.getCode(), axerr.getMsgError(), ')') } catch (e) { console.log('Err catch:', axerr) } }, async setLangServer() { const mydata = { username: this.my.username, lang: this.lang, } return Api.SendReq('/setlang', 'PATCH', { data: mydata }) .then((res) => { if (res) { return (res.data.code === serv_constants.RIS_CODE_OK) } return false }) .catch((error: any) => false) }, async requestpwd(paramquery: any) { const usertosend = { email: paramquery.email, } console.log(usertosend) this.setServerCode(tools.CALLING) return Api.SendReq('/requestnewpwd', 'POST', usertosend) .then((res) => ({ code: res.data.code, msg: res.data.msg })).catch((error) => { this.setErrorCatch(error) return this.getServerCode }) }, async vreg(paramquery: ILinkReg) { const usertosend = { idlink: paramquery.idlink, } console.log(usertosend) this.setServerCode(tools.CALLING) return Api.SendReq('/vreg', 'POST', usertosend) .then((res) => { // console.log("RITORNO 2 "); // mutations.setServerCode(myres); if (res.data.code === serv_constants.RIS_CODE_EMAIL_VERIFIED) { console.log('VERIFICATO !!') tools.localStSetItem(toolsext.localStorage.verified_email, String(true)) } else { console.log('Risultato di vreg: ', res.data.code) } return { code: res.data.code, msg: res.data.msg } }).catch((error) => { this.setErrorCatch(error) return { code: this.getServerCode, msg: error.getMsgError() } }) }, async unsubscribe(paramquery: any) { return Api.SendReq('/news/unsubscribe', 'POST', paramquery) .then((res) => { // console.log("RITORNO 2 "); // mutations.setServerCode(myres); if (res.data.code === serv_constants.RIS_UNSUBSCRIBED_OK) { console.log('DESOTTOSCRITTO ALLA NEWSLETTER !!') } else { console.log('Risultato di unsubscribe: ', res.data.code) } return { code: res.data.code, msg: res.data.msg } }).catch((error) => this.getServerCode) }, async importemail(paramquery: any) { return Api.SendReq('/news/import', 'POST', paramquery) .then((res) => res).catch((error) => ({ numtot: 0, numadded: 0, numalreadyexisted: 0 })) }, async importExtraList(paramquery: any) { return Api.SendReq('/users/import_extralist', 'POST', paramquery) .then((res) => { return res }).catch((error) => { return { numtot: 0, numadded: 0, numalreadyexisted: 0 } }) }, async execDbOp(paramquery: any) { return Api.SendReq('/users/dbop', 'POST', paramquery) .then((res) => { return res.data }).catch((error) => { return false }) }, async newsletterload(paramquery: any) { return Api.SendReq('/news/load', 'POST', paramquery) .then((res) => { // console.log('res', res) return res.data }).catch((error) => { return null }) }, async reportload(paramquery: any) { return Api.SendReq('/report/load', 'POST', paramquery) .then((res) => { // console.log('res', res) return res.data }).catch((error) => { return null }) }, async newsletter_setactivate(paramquery: any) { return Api.SendReq('/news/setactivate', 'POST', paramquery) .then((res) => { // console.log('res', res) return res.data }).catch((error) => { return null }) }, authUser(data: IUserFields) { try { this.my = { ...data } if (!this.my.profile) { this.my.profile = DefaultProfile // Memory this.my.profile.manage_mygroups = [] this.my.profile.asked_friends = [] this.my.profile.asked_groups = [] } this.isAdmin = tools.isBitActive(this.my.perm, shared_consts.Permissions.Admin.value) this.isManager = tools.isBitActive(this.my.perm, shared_consts.Permissions.Manager.value) this.isTutor = tools.isBitActive(this.my.perm, shared_consts.Permissions.Facilitatore.value) this.isZoomeri = tools.isBitActive(this.my.perm, shared_consts.Permissions.Zoomeri.value) this.isDepartment = tools.isBitActive(this.my.perm, shared_consts.Permissions.Department.value) this.isTeacher = tools.isBitActive(this.my.perm, shared_consts.Permissions.Teacher.value) this.isEditor = tools.isBitActive(this.my.perm, shared_consts.Permissions.Editor.value) this.my.tokens = [] this.resetArrToken(this.my.tokens) this.my.tokens.push({ access: 'auth', token: this.x_auth_token, data_login: tools.getDateNow() }) } catch (e) { console.log('Error authUser: ' + e) } }, updateLocalStorage(myuser: IUserFields) { const globalStore = useGlobalStore() const now = tools.getDateNow() // const expirationDate = new Date(now.getTime() + myres.data.expiresIn * 1000); const expirationDate = new Date(now.getTime() * 1000) tools.localStSetItem(toolsext.localStorage.lang, this.lang) tools.localStSetItem(toolsext.localStorage.userId, myuser._id) tools.localStSetItem(toolsext.localStorage.username, myuser.username) tools.localStSetItem(toolsext.localStorage.name, myuser.name) tools.localStSetItem(toolsext.localStorage.surname, myuser.surname) tools.localStSetItem(toolsext.localStorage.perm, String(myuser.perm) || '') if (myuser.profile !== undefined) tools.localStSetItem(toolsext.localStorage.img, (myuser.profile.img) ? String(myuser.profile.img) || '' : '') else tools.localStSetItem(toolsext.localStorage.img, '') localStorage.setItem(toolsext.localStorage.token, this.x_auth_token) localStorage.setItem(toolsext.localStorage.expirationDate, expirationDate.toString()) tools.localStSetItem(toolsext.localStorage.isLogged, String(true)) tools.localStSetItem(toolsext.localStorage.verified_email, String(myuser.verified_email)) tools.localStSetItem(toolsext.localStorage.verified_by_aportador, String(myuser.verified_by_aportador)) tools.localStSetItem(toolsext.localStorage.teleg_id, String(myuser.profile.teleg_id)) tools.localStSetItem(toolsext.localStorage.made_gift, String(myuser.made_gift)) tools.localStSetItem(toolsext.localStorage.wasAlreadySubOnDb, String(globalStore.wasAlreadySubOnDb)) }, setusersList(usersList: IUserFields[]) { // console.log('setusersList', usersList) // @ts-ignore this.usersList = [...usersList] }, setlang($router: Router, newstr: string) { console.log('SETLANG', newstr) this.lang = newstr toolsext.setLangAtt($router, newstr) tools.localStSetItem(toolsext.localStorage.lang, this.lang) }, signup(authData: ISignupOptions) { console.log('SIGNUP') const mylang = this.lang console.log('MYLANG: ' + mylang) return bcrypt.hash(authData.password!, bcrypt.genSaltSync(12)) .then((hashedPassword: string) => { authData.lang = mylang authData.password = String(hashedPassword) this.setServerCode(tools.CALLING) return Api.SendReq('/users', 'POST', authData) .then((res) => { const newuser = res.data // console.log('newuser', newuser) this.setServerCode(res.status) if (res.status === 200) { if (process.env.DEV) { console.log('USERNAME = ' + newuser.username) console.log('IDUSER= ' + newuser._id) } this.authUser(newuser) const now = tools.getDateNow() // const expirationDate = new Date(now.getTime() + myres.data.expiresIn * 1000); const expirationDate = new Date(now.getTime() * 1000) tools.localStSetItem(toolsext.localStorage.lang, this.lang) tools.localStSetItem(toolsext.localStorage.userId, newuser._id) tools.localStSetItem(toolsext.localStorage.username, newuser.username) tools.localStSetItem(toolsext.localStorage.name, newuser.name) tools.localStSetItem(toolsext.localStorage.surname, newuser.surname) localStorage.setItem(toolsext.localStorage.token, this.x_auth_token) localStorage.setItem(toolsext.localStorage.expirationDate, expirationDate.toString()) tools.localStSetItem(toolsext.localStorage.verified_email, String(false)) tools.localStSetItem(toolsext.localStorage.verified_by_aportador, String(false)) // Even if you has registered, you have to SignIn first this.isLogged = false // dispatch('storeUser', authData); // dispatch('setLogoutTimer', myres.data.expiresIn); console.log('OK') return { code: tools.OK, msg: '' } } else { console.log('ERR GENERICO') return { code: toolsext.ERR_GENERICO, msg: '' } } }) .catch((error) => { console.log('Err', error) this.setErrorCatch(error) return { code: this.getServerCode, msg: this.getMsg } }) }) }, UpdatePwd(x_auth_token: string) { this.x_auth_token = x_auth_token if (!this.my.tokens) { this.my.tokens = [] } this.my.tokens.push({ access: 'auth', token: x_auth_token, data_login: tools.getDateNow() }) }, setServerCode(num: number) { this.servercode = num }, setResStatus(status: number) { this.resStatus = status }, setAuth(x_auth_token: string) { this.x_auth_token = x_auth_token }, resetArrToken(arrtokens: IToken[]) { if (!arrtokens) { arrtokens = [] } // Take only the others access (from others Browser) return arrtokens.filter((token: IToken) => token.access !== 'auth') }, async signin($router: Router, authData: ISigninOptions) { console.log('LOGIN signin') const globalStore = useGlobalStore() // console.log('MYLANG = ' + this.lang) let sub = null try { if (static_data.functionality.PWA) { if ('serviceWorker' in navigator) { console.log('serviceWorker') sub = await navigator.serviceWorker.ready .then((swreg) => { console.log('swreg') sub = swreg.pushManager.getSubscription() return sub }) .catch((e) => { console.log(' ERROR ') sub = null }) } } } catch (e) { console.log('Err navigator.serviceWorker.ready ... GetSubscription:', e) } const options = { title: tools.translate('notification.title_subscribed', [{ strin: 'sitename', strout: translate('ws.sitename'), }]), content: translate('notification.subscribed'), openUrl: '/', } console.log('2') const usertosend = { username: authData.username.trim(), password: authData.password.trim(), lang: this.lang, subs: sub, options, } if (process.env.DEBUG === '1') { console.log(usertosend) } this.setServerCode(tools.CALLING) let myres: any return Api.SendReq('/users/login', 'POST', usertosend, true) .then((res) => { myres = res if (myres.status !== 200) { return Promise.reject(toolsext.ERR_GENERICO) } return myres }).then((res) => { console.log(' Login res', res) if (res.success) { globalStore.SetwasAlreadySubOnDb(res.data.subsExistonDb) const myuser: IUserFields = res.data.usertosend if (myuser) { // console.table(myuser) this.authUser(myuser) this.updateLocalStorage(myuser) globalStore.loadSite() } } return tools.OK }).then((code) => { if (code === tools.OK) { return this.setGlobal($router, true) .then(() => { return code }) } else { return code } }) .catch((error) => { console.log('error', error) this.setErrorCatch(error) return this.getServerCode }) }, async logout() { const globalStore = useGlobalStore() // const $router = useRouter() console.log('logout') localStorage.removeItem(toolsext.localStorage.expirationDate) localStorage.removeItem(toolsext.localStorage.token) localStorage.removeItem(toolsext.localStorage.userId) localStorage.removeItem(toolsext.localStorage.username) localStorage.removeItem(toolsext.localStorage.name) localStorage.removeItem(toolsext.localStorage.surname) localStorage.removeItem(toolsext.localStorage.img) localStorage.removeItem(toolsext.localStorage.perm) localStorage.removeItem(toolsext.localStorage.isLogged) // localStorage.removeItem(rescodes.localStorage.leftDrawerOpen) localStorage.removeItem(toolsext.localStorage.verified_email) localStorage.removeItem(toolsext.localStorage.verified_by_aportador) localStorage.removeItem(toolsext.localStorage.teleg_id) localStorage.removeItem(toolsext.localStorage.made_gift) localStorage.removeItem(toolsext.localStorage.categorySel) localStorage.removeItem(toolsext.localStorage.wasAlreadySubOnDb) this.isLogged = false this.my = { ...DefaultUser } await globalStore.clearDataAfterLogout() return Api.SendReq('/users/me/token', 'DELETE', null) .then((res) => { console.log(res) }).then(() => this.clearAuthData()).catch((error) => { this.setErrorCatch(error) return this.getServerCode }) }, async setGlobal($router: Router, isLogged: boolean) { console.log('setGlobal', isLogged) const globalStore = useGlobalStore() const todos = useTodoStore() const projects = useProjectStore() try { // this.isLogged = true if (isLogged) { // console.log('this.isLogged', this.isLogged) // globalStore.setleftDrawerOpen(localStorage.getItem(toolsext.localStorage.leftDrawerOpen) === 'true') globalStore.setCategorySel(localStorage.getItem(toolsext.localStorage.categorySel)) globalStore.checkUpdates() } const isok = await globalStore.loadAfterLogin() this.isLogged = isok && isLogged console.log('this.isLogged', this.isLogged, 'isok', isok, 'isLogged', isLogged) if (static_data.functionality.ENABLE_TODOS_LOADING) await todos.dbLoad({ checkPending: true }) if (static_data.functionality.ENABLE_PROJECTS_LOADING) await projects.dbLoad({ checkPending: true, onlyiffirsttime: true }) globalStore.addDynamicPages($router) // console.log('$router', $router) globalStore.finishLoading = true if (tools.isDebug()) console.log('finishLoading', globalStore.finishLoading) // document.dispatchEvent(new Event('custom-post-render-event')) } catch (e) { console.error('Error', e) globalStore.finishLoading = true } return true // console.log('setGlobal: END') }, async autologin_FromLocalStorage($router: Router, $q: any) { try { const globalStore = useGlobalStore() console.log('*** autologin_FromLocalStorage ***') // INIT let isLogged = false this.lang = tools.getItemLS(toolsext.localStorage.lang) const token = localStorage.getItem(toolsext.localStorage.token) if (token) { const expirationDateStr = localStorage.getItem(toolsext.localStorage.expirationDate) const expirationDate = new Date(String(expirationDateStr)) const now = tools.getDateNow() if (now < expirationDate) { this.setAuth(token) isLogged = true } else { // ++ ?? che fare qui } } else { isLogged = tools.isLogged() } /*if (token) { const expirationDateStr = localStorage.getItem(toolsext.localStorage.expirationDate) const expirationDate = new Date(String(expirationDateStr)) const now = tools.getDateNow() if (now < expirationDate) { const _id = String(localStorage.getItem(toolsext.localStorage.userId)) const username = String(localStorage.getItem(toolsext.localStorage.username)) const name = String(localStorage.getItem(toolsext.localStorage.name)) const surname = String(localStorage.getItem(toolsext.localStorage.surname)) const verified_email = localStorage.getItem(toolsext.localStorage.verified_email) === 'true' const verified_by_aportador = localStorage.getItem(toolsext.localStorage.verified_by_aportador) === 'true' const made_gift = localStorage.getItem(toolsext.localStorage.made_gift) === 'true' const myperm = localStorage.getItem(toolsext.localStorage.perm) let perm = 0 if (myperm) perm = parseInt(myperm, 10) const img = String(localStorage.getItem(toolsext.localStorage.img)) let teleg_id = 0 const telegid = localStorage.getItem(toolsext.localStorage.teleg_id) if (telegid) teleg_id = parseInt(telegid, 10) globalStore.wasAlreadySubOnDb = localStorage.getItem(toolsext.localStorage.wasAlreadySubOnDb) === 'true' console.log('************* autologin _id', _id) this.setAuth(token) this.authUser({ _id, username, name, surname, verified_email, verified_by_aportador, made_gift, perm, profile: { img, teleg_id, myshares: [], friends: [], req_friends: [], asked_friends: [], mygroups: [], asked_groups: [], manage_mygroups: [] }, }) isLogged = true } }*/ return await this.setGlobal($router, isLogged) .then((loadstorage: any) => { if (loadstorage) { if ($q.screen.gt.sm) { globalStore.setleftDrawerOpen(true) } /*if (toolsext.getLocale() !== '') { // console.log('SETLOCALE :', this.$i18n.locale) $i18n.locale = toolsext.getLocale() // Set Lang } else { userStore.setlang($router, this.$i18n.locale) }*/ //++Todo PWA: globalroutines('loadapp', '') // Create Subscription to Push Notification globalStore.createPushSubscription() } }) // console.log('autologin _id STATE ', this._id) // return true } catch (e: any) { console.error('ERR autologin ', e.message) return false } }, async loadUserProfile({username, idnotif}: {username: string, idnotif?: string}) { const data = { username, idnotif } return Api.SendReq('/users/profile', 'POST', data) .then((ris) => { this.my.profile.friends = ris.data.friends.listFriends ? ris.data.friends.listFriends : [] this.my.profile.req_friends = ris.data.friends.listRequestFriends ? ris.data.friends.listRequestFriends : [] this.my.profile.asked_friends = ris.data.friends.listSentRequestFriends ? ris.data.friends.listSentRequestFriends : [] return ris.data.user }).catch((error) => { return {} }) }, async setUserNotifs(notifs: IUserNotifType[]) { const data = { notifs } return Api.SendReq('/users/notifs', 'POST', data) .then((ris) => { return ris.data }).catch((error) => { return {} }) }, async loadUserPanel(username: string) { const data = { username } return Api.SendReq('/users/panel', 'POST', data) .then((ris) => { console.log('out:', ris) return ris.data }).catch((error) => { return {} }) }, async loadGroup(groupname: string) { const data = { groupname } return Api.SendReq('/mygroup/load', 'POST', data) .then((res) => { return res.data }).catch((error) => { return {} }) }, async loadSkill(idSkill: string) { const data = { idSkill } return Api.SendReq('/myskills/page', 'POST', data) .then((res) => { return res.data }).catch((error) => { return {} }) }, async loadGeneric(table: string, id: number) { const data = { table, id } return Api.SendReq('/mygen/page', 'POST', data) .then((res) => { return res.data }).catch((error) => { return {} }) }, async loadFriends(username: string) { return Api.SendReq('/users/friends', 'POST', null) .then((ris) => { this.my.profile.friends = ris.data.listFriends ? ris.data.listFriends : [] this.my.profile.req_friends = ris.data.listRequestFriends ? ris.data.listRequestFriends : [] this.my.profile.asked_friends = ris.data.listSentRequestFriends ? ris.data.listSentRequestFriends : [] return ris.data }).catch((error) => { return {} }) }, async loadGroups(username: string) { return Api.SendReq('/users/groups', 'POST', null) .then((res) => { return res.data }).catch((error) => { return {} }) }, async setFriendsCmd($q: any, t: any, usernameOrig: string, usernameDest: string, cmd: number, value: any) { return Api.SendReq('/users/friends/cmd', 'POST', { usernameOrig, usernameDest, cmd, value }) .then((res) => { return res.data }).catch((error) => { tools.showNegativeNotif($q, t('db.recfailed')) return {} }) }, async setGroupsCmd($q: any, t: any, usernameOrig: string, groupnameDest: string, cmd: number, value: any) { return Api.SendReq('/users/groups/cmd', 'POST', { usernameOrig, groupnameDest, cmd, value }) .then((res) => { return res.data }).catch((error) => { tools.showNegativeNotif($q, t('db.recfailed')) return {} }) }, async sendMsgToBotTelegram($q: any, t: any, mydata: IMsgGlobParam) { return Api.SendReq('/users/mgt', 'POST', { mydata }) .then((res) => { console.log('res', res) let msgok = (res.data.nummsgsent === 1) ? res.data.nummsgsent + ' ' + t('cal.sendmsg_sent') : res.data.nummsgsent + ' ' + t('cal.sendmsgs_sent') if (mydata.cmd === shared_consts.MsgTeleg.SHARE_MSGREG) { msgok = t('cal.sendmsg_sent_sharedlink') + ' ' + tools.getBotName() } if (res.data.nummsgsent >= 0) { tools.showPositiveNotif($q, msgok) return true } return false }).catch((error) => { tools.showNegativeNotif($q, t('cal.err_sendmsg')) return {} }) }, async importToServerCmd($q: any, t: any, cmd: number, data: any) { return Api.SendReq('/admin/import', 'POST', { cmd, data }) .then((res) => { if (res) { tools.showPositiveNotif($q, t('db.recupdated')) } }).catch((error) => { tools.showNegativeNotif($q, t('db.recfailed')) return {} }) } }, })