88 lines
1.9 KiB
TypeScript
88 lines
1.9 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) {
|
|
console.error('Error updating member:', error);
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
public async delete(): Promise<void> {
|
|
try {
|
|
await this.ghostInstanceRef.adminApi.members.delete({ id: this.getId() });
|
|
} catch (error) {
|
|
console.error(`Error deleting member with id ${this.getId()}:`, error);
|
|
throw error;
|
|
}
|
|
}
|
|
}
|