86 lines
1.8 KiB
TypeScript
86 lines
1.8 KiB
TypeScript
|
import type { Ghost } from './classes.ghost.js';
|
||
|
|
||
|
export interface IMember {
|
||
|
id: string;
|
||
|
uuid: string;
|
||
|
email: string;
|
||
|
name?: string;
|
||
|
note?: string;
|
||
|
geolocation?: string;
|
||
|
enable_comment_notifications?: boolean;
|
||
|
subscribed?: boolean;
|
||
|
email_count?: number;
|
||
|
email_opened_count?: number;
|
||
|
email_open_rate?: number;
|
||
|
status?: string;
|
||
|
created_at: string;
|
||
|
updated_at: string;
|
||
|
labels?: Array<{
|
||
|
id: string;
|
||
|
name: string;
|
||
|
slug: string;
|
||
|
}>;
|
||
|
subscriptions?: any[];
|
||
|
avatar_image?: string;
|
||
|
comped?: boolean;
|
||
|
email_suppression?: {
|
||
|
suppressed: boolean;
|
||
|
info?: string;
|
||
|
};
|
||
|
}
|
||
|
|
||
|
export class Member {
|
||
|
public ghostInstanceRef: Ghost;
|
||
|
public memberData: IMember;
|
||
|
|
||
|
constructor(ghostInstanceRefArg: Ghost, memberData: IMember) {
|
||
|
this.ghostInstanceRef = ghostInstanceRefArg;
|
||
|
this.memberData = memberData;
|
||
|
}
|
||
|
|
||
|
public getId(): string {
|
||
|
return this.memberData.id;
|
||
|
}
|
||
|
|
||
|
public getEmail(): string {
|
||
|
return this.memberData.email;
|
||
|
}
|
||
|
|
||
|
public getName(): string | undefined {
|
||
|
return this.memberData.name;
|
||
|
}
|
||
|
|
||
|
public getStatus(): string | undefined {
|
||
|
return this.memberData.status;
|
||
|
}
|
||
|
|
||
|
public getLabels(): Array<{ id: string; name: string; slug: string }> | undefined {
|
||
|
return this.memberData.labels;
|
||
|
}
|
||
|
|
||
|
public toJson(): IMember {
|
||
|
return this.memberData;
|
||
|
}
|
||
|
|
||
|
public async update(memberData: Partial<IMember>): Promise<Member> {
|
||
|
try {
|
||
|
const updatedMemberData = await this.ghostInstanceRef.adminApi.members.edit({
|
||
|
...memberData,
|
||
|
id: this.getId()
|
||
|
});
|
||
|
this.memberData = updatedMemberData;
|
||
|
return this;
|
||
|
} catch (error) {
|
||
|
throw error;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public async delete(): Promise<void> {
|
||
|
try {
|
||
|
await this.ghostInstanceRef.adminApi.members.delete({ id: this.getId() });
|
||
|
} catch (error) {
|
||
|
throw error;
|
||
|
}
|
||
|
}
|
||
|
}
|