tab4.page.ts 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. import { Component, OnInit } from '@angular/core';
  2. import { Router } from '@angular/router';
  3. import {
  4. IonHeader,
  5. IonToolbar,
  6. IonTitle,
  7. IonContent,
  8. IonCard,
  9. IonCardContent,
  10. IonGrid,
  11. IonRow,
  12. IonCol,
  13. IonAvatar,
  14. IonButton,
  15. ModalController,
  16. IonItem,
  17. IonList,
  18. IonSegment,
  19. IonSegmentButton,
  20. IonLabel,
  21. IonSegmentView,
  22. IonSegmentContent,
  23. } from '@ionic/angular/standalone';
  24. import { CloudQuery, CloudUser } from 'src/lib/cyxncloud';
  25. import { ModalEditPagePage } from '../page/modal/modal-edit-page/modal-edit-page.page';
  26. import { CommonModule } from '@angular/common';
  27. export interface User {
  28. avatar: string;
  29. username: string;
  30. age: number;
  31. sex: string;
  32. email: string;
  33. phoneNumber: string;
  34. height: number;
  35. weight: number;
  36. fans: number;
  37. likes: number;
  38. }
  39. @Component({
  40. selector: 'app-tab4',
  41. templateUrl: 'tab4.page.html',
  42. styleUrls: ['tab4.page.scss'],
  43. standalone: true,
  44. imports: [
  45. IonHeader,
  46. IonToolbar,
  47. IonTitle,
  48. IonContent,
  49. IonCard,
  50. IonGrid,
  51. IonRow,
  52. IonCol,
  53. IonAvatar,
  54. IonCardContent,
  55. IonButton,
  56. IonItem,
  57. IonList,
  58. IonSegment,
  59. IonSegmentButton,
  60. IonLabel,
  61. IonSegmentView,
  62. IonSegmentContent,
  63. CommonModule,
  64. ],
  65. })
  66. export class Tab4Page implements OnInit {
  67. is_login: boolean = false;
  68. currentUser: CloudUser | null = null;
  69. userChangeInfo: any = '';
  70. user: User = {
  71. avatar: 'https://ionicframework.com/docs/img/demos/avatar.svg',
  72. username: '请登录',
  73. age: 0,
  74. sex: '-',
  75. email: '-',
  76. phoneNumber: '-',
  77. height: 0,
  78. weight: 0,
  79. fans: 0,
  80. likes: 0,
  81. };
  82. constructor(private router: Router, private modalCtrl: ModalController) {
  83. this.getByUser();
  84. let userCache = localStorage.getItem('userData');
  85. if (userCache) {
  86. let userData = JSON.parse(userCache);
  87. console.log(userData);
  88. this.user.avatar = userData.avatar;
  89. this.user.username = userData.username;
  90. this.user.age = userData.age;
  91. this.user.sex = userData.sex;
  92. this.user.email = userData.email;
  93. this.user.phoneNumber = userData.phoneNumber;
  94. this.user.height = userData.height;
  95. this.user.weight = userData.weight;
  96. this.user.fans = userData.fans;
  97. this.user.likes = userData.likes;
  98. let is_loginCache = localStorage.getItem('is_login');
  99. this.is_login = is_loginCache === 'true' ? true : false;
  100. }
  101. }
  102. ngOnInit() {}
  103. refreshPage() {
  104. window.location.reload(); // 强制刷新整个页面
  105. }
  106. navigateTo(path: string) {
  107. this.router.navigate([`/${path}`]);
  108. }
  109. async openModal() {
  110. const modal = await this.modalCtrl.create({
  111. component: ModalEditPagePage,
  112. });
  113. modal.present();
  114. const { data, role } = await modal.onWillDismiss();
  115. if (role === 'confirm') {
  116. this.userChangeInfo = data;
  117. await this.updateUser();
  118. }
  119. }
  120. async logout() {
  121. this.is_login = false;
  122. let user = new CloudUser();
  123. let flag = await user.logout();
  124. localStorage.removeItem('userData');
  125. localStorage.removeItem('is_login');
  126. }
  127. async updateUser() {
  128. Object.keys(this.userChangeInfo).forEach((key) => {
  129. if (key == 'age') {
  130. this.userChangeInfo[key] = Number(this.userChangeInfo[key]);
  131. }
  132. if (key == 'height') {
  133. this.userChangeInfo[key] = Number(this.userChangeInfo[key]);
  134. }
  135. if (key == 'weight') {
  136. this.userChangeInfo[key] = Number(this.userChangeInfo[key]);
  137. }
  138. });
  139. let user = new CloudUser();
  140. let res = await user.update(this.userChangeInfo);
  141. console.log('成功更新用户信息');
  142. this.logout();
  143. this.navigateTo('login-page');
  144. }
  145. newslists: any[] = [];
  146. async getByUser() {
  147. let className = 'News';
  148. let newsQuery = new CloudQuery(className);
  149. let userCache = localStorage.getItem('userData');
  150. let objectId = '';
  151. if (userCache) {
  152. let userData = JSON.parse(userCache);
  153. objectId = userData.objectId;
  154. }
  155. if (objectId) {
  156. let newslist = await newsQuery.getBy('author', objectId);
  157. this.newslists = newslist.results;
  158. console.log(this.newslists);
  159. }
  160. }
  161. }