File tree Expand file tree Collapse file tree 2 files changed +40
-1
lines changed
Expand file tree Collapse file tree 2 files changed +40
-1
lines changed Original file line number Diff line number Diff line change 11import { HTTPError } from 'ky'
22import { resolveApiConfig } from '../request'
33import { ApiClient } from '../api-client'
4+ import { objectPick } from '../utils/objects'
45import { isSuccess , throwRequestFailureError } from './utils/response'
56import { resolveAreaCode } from './utils/user'
67import { JikeUser } from './user'
@@ -235,13 +236,35 @@ export class JikeClient {
235236 return JSON . stringify ( await this . toJSON ( ) , undefined , space )
236237 }
237238
239+ /**
240+ * 从 JSON 数据创建
241+ * @param data 数据
242+ */
243+ static fromJSON ( data : JikeClientJSON ) : JikeClient {
244+ return new JikeClient (
245+ objectPick ( data , [
246+ 'endpointId' ,
247+ 'endpointUrl' ,
248+ 'bundleId' ,
249+ 'appVersion' ,
250+ 'buildNo' ,
251+ 'userAgent' ,
252+ 'deviceId' ,
253+ 'idfv' ,
254+
255+ 'accessToken' ,
256+ 'refreshToken' ,
257+ ] )
258+ )
259+ }
260+
238261 /**
239262 * 反序列化
240263 * @param data 数据
241264 */
242265 static deserialize ( data : string ) : JikeClient {
243266 const json : JikeClientJSON = JSON . parse ( data )
244- return new JikeClient ( { ... json } )
267+ return this . fromJSON ( json )
245268 }
246269}
247270
Original file line number Diff line number Diff line change 1+ /**
2+ * Create a new subset object by giving keys
3+ *
4+ * @category Object
5+ * @fork {@link https://github.com/antfu/utils/blob/main/src/object.ts#L113 }
6+ */
7+ export function objectPick < O , T extends keyof O > (
8+ obj : O ,
9+ keys : T [ ] ,
10+ omitUndefined = false
11+ ) {
12+ return keys . reduce ( ( n , k ) => {
13+ if ( k in obj && ( ! omitUndefined || obj [ k ] !== undefined ) ) n [ k ] = obj [ k ]
14+ return n
15+ } , { } as Pick < O , T > )
16+ }
You can’t perform that action at this time.
0 commit comments