user.js 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import { ref } from 'vue'
  2. import { defineStore } from 'pinia'
  3. import { http } from '@/plugins/http'
  4. import { AppsFlyer } from 'appsflyer-capacitor-plugin'
  5. import { Capacitor } from '@capacitor/core'
  6. import { Facebook, PixelEventNames } from 'capacitor-facebook'
  7. async function setAfCuid(cuid) {
  8. // if (Capacitor.isNativePlatform()) {
  9. // AppsFlyer.setCustomerUserId({ cuid })
  10. // }
  11. }
  12. async function logLogin() {
  13. if (Capacitor.isNativePlatform()) {
  14. AppsFlyer.logEvent({ eventName: 'af_login' })
  15. } else {
  16. Facebook.logEvent({
  17. name: 'Login'
  18. })
  19. }
  20. }
  21. async function logRegistraion(methods = 'username') {
  22. if (Capacitor.isNativePlatform()) {
  23. AppsFlyer.logEvent({
  24. eventName: 'af_complete_registration',
  25. eventValue: {
  26. af_registration_method: methods,
  27. af_currency: 'PHP'
  28. }
  29. })
  30. } else {
  31. Facebook.logEvent({
  32. name: PixelEventNames.CompleteRegistration
  33. })
  34. }
  35. }
  36. export const useUserStore = defineStore('user', () => {
  37. const user = ref(null)
  38. const login = (username, password) => {
  39. return new Promise((resolve, reject) => {
  40. http.post('/auth/v1/login', { username, password })
  41. .then(res => {
  42. http.setToken(res.token)
  43. user.value = res.user
  44. setAfCuid(res.user.id)
  45. logLogin()
  46. if (res.newRegister) logRegistraion()
  47. resolve(res)
  48. })
  49. .catch(e => {
  50. reject(e)
  51. })
  52. })
  53. }
  54. const loginByCode = (phone, code, invitor) => {
  55. return new Promise((resolve, reject) => {
  56. http.post('/auth/v1/phoneLogin', { phone, code, invitor })
  57. .then(res => {
  58. http.setToken(res.token)
  59. user.value = res.user
  60. setAfCuid(res.user.id)
  61. logLogin()
  62. if (res.newRegister) logRegistraion()
  63. resolve(res)
  64. })
  65. .catch(e => {
  66. reject(e)
  67. })
  68. })
  69. }
  70. const register = (username, code, password, invitor) => {
  71. return new Promise((resolve, reject) => {
  72. http.post('/auth/v1/userRegister', { username, password, invitor })
  73. .then(res => {
  74. http.setToken(res.token)
  75. user.value = res.user
  76. setAfCuid(res.user.id)
  77. logLogin()
  78. if (res.newRegister) logRegistraion()
  79. resolve(res)
  80. })
  81. .catch(e => {
  82. reject(e)
  83. })
  84. })
  85. }
  86. const get = async () => {
  87. if (!http.token.value) return Promise.reject()
  88. return http.get('/user/my').then(res => {
  89. setAfCuid(res.id)
  90. user.value = res
  91. })
  92. }
  93. const logout = () => {
  94. http.setToken(null)
  95. user.value = null
  96. }
  97. return { user, login, get, loginByCode, register, logout }
  98. })