83 lines
2.6 KiB
Plaintext
83 lines
2.6 KiB
Plaintext
import { Base64Util, FileUtil } from '@pura/harmony-utils';
|
|
import { plainToInstance } from 'class-transformer';
|
|
import { UploadImgEntity } from '../entity/UploadImgEntity';
|
|
import { UserEntity } from '../entity/UserEntity';
|
|
import { LoginManager } from '../manager/LoginGlobalManager';
|
|
import { apiService } from '../net/ApiService';
|
|
import { ToastUtils } from '../utils/ToastUtils';
|
|
import { BaseViewModel } from './BaseViewModel';
|
|
import { fileIo } from '@kit.CoreFileKit';
|
|
|
|
@ObservedV2
|
|
export class UserSettingsViewModel extends BaseViewModel {
|
|
@Trace userEntity?: UserEntity
|
|
@Trace imageEntity?: UploadImgEntity
|
|
@Trace update?: object
|
|
|
|
async userinfo() {
|
|
this.showLoading()
|
|
try {
|
|
const result = await apiService.userinfo();
|
|
if (result.isSuccess()) {
|
|
this.userEntity = plainToInstance(UserEntity, result.data);
|
|
LoginManager.setUserInfo(this.userEntity);
|
|
} else {
|
|
ToastUtils.show(result.message, true);
|
|
}
|
|
this.dismissLoading()
|
|
} catch (e) {
|
|
this.dismissLoading()
|
|
console.log(e);
|
|
ToastUtils.show(e);
|
|
}
|
|
}
|
|
|
|
async updateUserinfo(params: Record<string, string>) {
|
|
this.showLoading()
|
|
try {
|
|
const result = await apiService.updateUserinfo(params);
|
|
if (result.isSuccess()) {
|
|
this.update = new Object()
|
|
} else {
|
|
ToastUtils.show(result.message, true);
|
|
}
|
|
this.dismissLoading()
|
|
} catch (e) {
|
|
this.dismissLoading()
|
|
console.log(e);
|
|
ToastUtils.show(e);
|
|
}
|
|
}
|
|
|
|
async uploadImage(uri: string) {
|
|
this.showLoading()
|
|
try {
|
|
let file = FileUtil.openSync(uri, fileIo.OpenMode.READ_ONLY);
|
|
// 复制文件到缓存目录下
|
|
let cacheFilePath = FileUtil.getCacheDirPath() + '/' + FileUtil.getFileName(uri)
|
|
FileUtil.copyFileSync(file.fd, cacheFilePath)
|
|
// 读取文件为ArrayBuffer
|
|
const file2 = FileUtil.openSync(cacheFilePath, 0o2);
|
|
const stat = FileUtil.lstatSync(cacheFilePath);
|
|
const buffer = new ArrayBuffer(stat.size);
|
|
FileUtil.readSync(file2.fd, buffer);
|
|
FileUtil.fsyncSync(file2.fd);
|
|
FileUtil.closeSync(file2.fd);
|
|
FileUtil.closeSync(file);
|
|
|
|
const base64Str = Base64Util.encodeToStrSync(new Uint8Array(buffer))
|
|
|
|
const result = await apiService.uploadImage(base64Str, 'feedback');
|
|
if (result.isSuccess()) {
|
|
this.imageEntity = plainToInstance(UploadImgEntity, result.data);
|
|
} else {
|
|
ToastUtils.show(result.message, true)
|
|
}
|
|
this.dismissLoading()
|
|
} catch (e) {
|
|
this.dismissLoading()
|
|
console.log(e);
|
|
ToastUtils.show(e);
|
|
}
|
|
}
|
|
} |