From 39e1955aad191926649d706d6edb11f70957e029 Mon Sep 17 00:00:00 2001 From: lijiarui Date: Mon, 6 Feb 2017 13:55:34 +0800 Subject: [PATCH] rename the nick/remark/display for contact/room #217 --- src/contact.ts | 59 ++++++++++++++++++++++------------ src/puppet-web/puppet-web.ts | 2 +- src/puppet.ts | 2 +- src/room.ts | 61 +++++++++++++++++++++--------------- 4 files changed, 76 insertions(+), 48 deletions(-) diff --git a/src/contact.ts b/src/contact.ts index 8e5bf39e..50e6973b 100644 --- a/src/contact.ts +++ b/src/contact.ts @@ -22,7 +22,7 @@ type ContactObj = { id: string name: string province: string - remark: string|null + alias: string|null sex: Gender signature: string star: boolean @@ -55,8 +55,10 @@ export enum Gender { } export type ContactQueryFilter = { - name?: string | RegExp + name?: string | RegExp + // remark should be deprecated remark?: string | RegExp + alias?: string | RegExp } export class Contact implements Sayable { @@ -78,7 +80,7 @@ export class Contact implements Sayable { if (!this.obj) { return this.id } - return this.obj.remark || this.obj.name || this.id + return this.obj.alias || this.obj.name || this.id } public toStringEx() { return `Contact(${this.obj && this.obj.name}[${this.id}])` } @@ -93,7 +95,7 @@ export class Contact implements Sayable { , uin: rawObj.Uin // stable id: 4763975 || getCookie("wxuin") , weixin: rawObj.Alias // Wechat ID , name: rawObj.NickName - , remark: rawObj.RemarkName + , alias: rawObj.RemarkName , sex: rawObj.Sex , province: rawObj.Province , city: rawObj.City @@ -222,7 +224,7 @@ export class Contact implements Sayable { } /** - * find contact by `name`(NickName) or `remark`(RemarkName) + * find contact by `name` or `alias` */ public static async findAll(queryArg?: ContactQueryFilter): Promise { let query: ContactQueryFilter @@ -232,6 +234,10 @@ export class Contact implements Sayable { query = { name: /.*/ } } + if (query[0] === 'remark') { + log.warn('Contact', 'findAll(remark:%s) DEPRECATED, use findAll(alias:%s) instead.') + } + // log.verbose('Cotnact', 'findAll({ name: %s })', query.name) log.verbose('Cotnact', 'findAll({ %s })' , Object.keys(query) @@ -248,7 +254,9 @@ export class Contact implements Sayable { const keyMap = { name: 'NickName', + // should be deprecated remark: 'RemarkName', + alias: 'RemarkName', } filterKey = keyMap[filterKey] @@ -287,46 +295,57 @@ export class Contact implements Sayable { } /** - * get the remark for contact + * get the alias for contact */ - public remark(): string | null + public alias(): string | null /** - * set the remark for contact + * set the alias for contact * @return {Promise} A promise to the result. true for success, false for failure */ - public remark(newRemark: string): Promise + public alias(newAlias: string): Promise /** - * delete the remark for a contact + * delete the alias for a contact */ - public remark(empty: null): Promise + public alias(empty: null): Promise - public remark(newRemark?: string|null): Promise | string | null { - log.silly('Contact', 'remark(%s)', newRemark || '') + public alias(newAlias?: string|null): Promise | string | null { + log.silly('Contact', 'alias(%s)', newAlias || '') - if (newRemark === undefined) { - return this.obj && this.obj.remark || null + if (newAlias === undefined) { + return this.obj && this.obj.alias || null } return Config.puppetInstance() - .contactRemark(this, newRemark) + .contactAlias(this, newAlias) .then(ret => { if (ret) { if (this.obj) { - this.obj.remark = newRemark + this.obj.alias = newAlias } else { - log.error('Contact', 'remark() without this.obj?') + log.error('Contact', 'alias() without this.obj?') } } else { - log.warn('Contact', 'remark(%s) fail', newRemark) + log.warn('Contact', 'alias(%s) fail', newAlias) } return ret }) .catch(e => { - log.error('Contact', 'remark(%s) rejected: %s', newRemark, e.message) + log.error('Contact', 'alias(%s) rejected: %s', newAlias, e.message) return false // fail safe }) } + public remark(newRemark?: string|null): Promise | string | null { + log.warn('Contact', 'remark(%s) DEPRECATED, use alias(%s) instead.') + log.silly('Contact', 'remark(%s)', newRemark || '') + + if (newRemark) { + return this.alias(newRemark) + } else { + return this.alias() + } + } + /** * try to find a contact by filter: {name: string | RegExp} */ diff --git a/src/puppet-web/puppet-web.ts b/src/puppet-web/puppet-web.ts index 2babeeb8..67e3833f 100644 --- a/src/puppet-web/puppet-web.ts +++ b/src/puppet-web/puppet-web.ts @@ -374,7 +374,7 @@ export class PuppetWeb extends Puppet { } } - public async contactRemark(contact: Contact, remark: string|null): Promise { + public async contactAlias(contact: Contact, remark: string|null): Promise { try { const ret = await this.bridge.contactRemark(contact.id, remark) if (!ret) { diff --git a/src/puppet.ts b/src/puppet.ts index e7dec7b5..df63171c 100644 --- a/src/puppet.ts +++ b/src/puppet.ts @@ -67,5 +67,5 @@ export abstract class Puppet extends EventEmitter implements Sayable { * Contact */ public abstract contactFind(filterFunc: string): Promise - public abstract contactRemark(contact: Contact, remark: string|null): Promise + public abstract contactAlias(contact: Contact, alias: string|null): Promise } diff --git a/src/room.ts b/src/room.ts index 75ac9553..33d1b00d 100644 --- a/src/room.ts +++ b/src/room.ts @@ -25,12 +25,12 @@ type RoomObj = { topic: string ownerUin: number memberList: Contact[] - nickMap: Map - remarkMap: Map - displayMap: Map + nameMap: Map + aliasMap: Map + roomAliasMap: Map } -type NameType = 'nick' | 'display' | 'remark' +type NameType = 'name' | 'alias' | 'roomAlias' export type RoomRawMember = { UserName: string @@ -57,9 +57,9 @@ export type RoomQueryFilter = { } export type MemberQueryFilter = { - nick?: string - remark?: string - display?: string + name?: string + alias?: string + roomAlias?: string } export class Room extends EventEmitter implements Sayable { @@ -206,10 +206,10 @@ export class Room extends EventEmitter implements Sayable { return null } - const memberList = this.parseMemberList(rawObj.MemberList) - const nickMap = this.parseMap(rawObj.MemberList, 'nick') - const remarkMap = this.parseMap(rawObj.MemberList, 'remark') - const displayMap = this.parseMap(rawObj.MemberList, 'display') + const memberList = this.parseMemberList(rawObj.MemberList) + const nameMap = this.parseMap(rawObj.MemberList, 'name') + const aliasMap = this.parseMap(rawObj.MemberList, 'alias') + const roomAliasMap = this.parseMap(rawObj.MemberList, 'roomAlias') return { id: rawObj.UserName, @@ -218,9 +218,9 @@ export class Room extends EventEmitter implements Sayable { ownerUin: rawObj.OwnerUin, memberList, - nickMap, - remarkMap, - displayMap, + nameMap, + aliasMap, + roomAliasMap, } } @@ -237,13 +237,13 @@ export class Room extends EventEmitter implements Sayable { let tmpName: string let contact = Contact.load(member.UserName) switch (parseContent) { - case 'nick': + case 'name': tmpName = contact.name() break - case 'remark': - tmpName = contact.remark() || '' + case 'alias': + tmpName = contact.alias() || '' break - case 'display': + case 'roomAlias': tmpName = member.DisplayName break default: @@ -252,7 +252,7 @@ export class Room extends EventEmitter implements Sayable { /** * ISSUE #64 emoji need to be striped * ISSUE #104 never use remark name because sys group message will never use that - * @rui: cannot use argument NickName because it mix real nick and remark + * @rui: cannot use argument NickName because it mix real name and alias */ mapList[member.UserName] = UtilLib.stripEmoji(tmpName) }) @@ -350,11 +350,20 @@ export class Room extends EventEmitter implements Sayable { return UtilLib.plainText(this.obj ? this.obj.topic : '') } + // should be deprecated public nick(contact: Contact): string { - if (!this.obj || !this.obj.nickMap) { + log.warn('Room', 'nick(Contact) DEPRECATED, use name(Contact) instead.') + if (!this.obj || !this.obj.nameMap) { return '' } - return this.obj.displayMap[contact.id] || this.obj.nickMap[contact.id] + return this.obj.roomAliasMap[contact.id] || this.obj.nameMap[contact.id] + } + + public name(contact: Contact): string { + if (!this.obj || !this.obj.nameMap) { + return '' + } + return this.obj.roomAliasMap[contact.id] || this.obj.nameMap[contact.id] } public has(contact: Contact): boolean { @@ -390,7 +399,7 @@ export class Room extends EventEmitter implements Sayable { } /** - * find member by `nick`(NickName) / `display`(DisplayName) / `remark`(RemarkName) + * find member by `name` / `roomAlias` / `alias` * when use member(name:string), find all name by default */ @@ -399,7 +408,7 @@ export class Room extends EventEmitter implements Sayable { public member(queryArg: MemberQueryFilter | string): Contact | null { if (typeof queryArg === 'string') { - return this.member({remark: queryArg}) || this.member({display: queryArg}) || this.member({nick: queryArg}) + return this.member({alias: queryArg}) || this.member({roomAlias: queryArg}) || this.member({name: queryArg}) } log.silly('Room', 'member({ %s })' @@ -423,9 +432,9 @@ export class Room extends EventEmitter implements Sayable { let filterValue: string = UtilLib.stripEmoji(queryArg[filterKey]) const keyMap = { - nick: 'nickMap', - remark: 'remarkMap', - display: 'displayMap' + name: 'nameMap', + alias: 'aliasMap', + roomAlias: 'roomAliasMap' } filterKey = keyMap[filterKey] -- GitLab