mirror of
https://github.com/chatmail/core.git
synced 2026-04-05 23:22:11 +03:00
112 lines
2.7 KiB
TypeScript
112 lines
2.7 KiB
TypeScript
/* eslint-disable camelcase */
|
|
|
|
import binding from './binding'
|
|
import rawDebug from 'debug'
|
|
const debug = rawDebug('deltachat:node:chat')
|
|
import { C } from './constants'
|
|
import { integerToHexColor } from './util'
|
|
import { ChatJSON } from './types'
|
|
|
|
interface NativeChat {}
|
|
/**
|
|
* Wrapper around dc_chat_t*
|
|
*/
|
|
|
|
export class Chat {
|
|
constructor(public dc_chat: NativeChat) {
|
|
debug('Chat constructor')
|
|
if (dc_chat === null) {
|
|
throw new Error('native chat can not be null')
|
|
}
|
|
}
|
|
|
|
getVisibility():
|
|
| C.DC_CHAT_VISIBILITY_NORMAL
|
|
| C.DC_CHAT_VISIBILITY_ARCHIVED
|
|
| C.DC_CHAT_VISIBILITY_PINNED {
|
|
return binding.dcn_chat_get_visibility(this.dc_chat)
|
|
}
|
|
|
|
get color(): string {
|
|
return integerToHexColor(binding.dcn_chat_get_color(this.dc_chat))
|
|
}
|
|
|
|
getId(): number {
|
|
return binding.dcn_chat_get_id(this.dc_chat)
|
|
}
|
|
|
|
getName(): string {
|
|
return binding.dcn_chat_get_name(this.dc_chat)
|
|
}
|
|
|
|
getMailinglistAddr(): string {
|
|
return binding.dcn_chat_get_mailinglist_addr(this.dc_chat)
|
|
}
|
|
|
|
getProfileImage(): string {
|
|
return binding.dcn_chat_get_profile_image(this.dc_chat)
|
|
}
|
|
|
|
getType(): number {
|
|
return binding.dcn_chat_get_type(this.dc_chat)
|
|
}
|
|
|
|
isSelfTalk(): boolean {
|
|
return Boolean(binding.dcn_chat_is_self_talk(this.dc_chat))
|
|
}
|
|
|
|
isContactRequest(): boolean {
|
|
return Boolean(binding.dcn_chat_is_contact_request(this.dc_chat))
|
|
}
|
|
|
|
isUnpromoted(): boolean {
|
|
return Boolean(binding.dcn_chat_is_unpromoted(this.dc_chat))
|
|
}
|
|
|
|
isProtected(): boolean {
|
|
return Boolean(binding.dcn_chat_is_protected(this.dc_chat))
|
|
}
|
|
|
|
get canSend(): boolean {
|
|
return Boolean(binding.dcn_chat_can_send(this.dc_chat))
|
|
}
|
|
|
|
isDeviceTalk(): boolean {
|
|
return Boolean(binding.dcn_chat_is_device_talk(this.dc_chat))
|
|
}
|
|
|
|
isSingle(): boolean {
|
|
return this.getType() === C.DC_CHAT_TYPE_SINGLE
|
|
}
|
|
|
|
isGroup(): boolean {
|
|
return this.getType() === C.DC_CHAT_TYPE_GROUP
|
|
}
|
|
|
|
isMuted(): boolean {
|
|
return Boolean(binding.dcn_chat_is_muted(this.dc_chat))
|
|
}
|
|
|
|
toJson(): ChatJSON {
|
|
debug('toJson')
|
|
const visibility = this.getVisibility()
|
|
return {
|
|
archived: visibility === C.DC_CHAT_VISIBILITY_ARCHIVED,
|
|
pinned: visibility === C.DC_CHAT_VISIBILITY_PINNED,
|
|
color: this.color,
|
|
id: this.getId(),
|
|
name: this.getName(),
|
|
mailinglistAddr: this.getMailinglistAddr(),
|
|
profileImage: this.getProfileImage(),
|
|
type: this.getType(),
|
|
isSelfTalk: this.isSelfTalk(),
|
|
isUnpromoted: this.isUnpromoted(),
|
|
isProtected: this.isProtected(),
|
|
canSend: this.canSend,
|
|
isDeviceTalk: this.isDeviceTalk(),
|
|
isContactRequest: this.isContactRequest(),
|
|
muted: this.isMuted(),
|
|
}
|
|
}
|
|
}
|