// import { buildSchema } from 'graphql'; // import { Type, SCHEMA } from 'common/graph'; // import Message from './Message'; // import Account from './Account'; // import Conversation from './Conversation'; // export interface Context { // accounts: Record; // } // export const Schema = buildSchema(SCHEMA); // function messageResolver(message: Message) { // return { // id: message.id, // date: message.date, // from: message.from, // to: message.to, // html: () => message.content, // markdown: () => message.content // }; // } // function conversationResolver(conversation: Conversation, id: string) { // return { // id: id, // unread: false, // title: conversation.title, // lastMessage: conversation.date, // messages: conversation.messages, // participants: conversation.participants // }; // } // function accountResolver(account: Account, id: string) { // return { // id: id, // name: account.getName(), // image: account.getImage(), // address: account.getAddress(), // unread: account.hasUnreads(), // messages: [], // contacts: () => account.getContacts(), // conversations: () => { // const conversations = account.getConversations(); // for (let key in conversations) if (!conversations[key].active) delete conversations[key]; // return Object.keys(conversations).map(id => conversationResolver(conversations[id as any], id)); // } // }; // } // export const Resolver = { // accounts: (_: any, ctx: Context) => Object.keys(ctx.accounts).map(id => accountResolver(ctx.accounts[id], id)), // account: ({ account: id }: { account: string }, ctx: Context) => accountResolver(ctx.accounts[id], id), // messages: async ({ account, ids }: { account: string; ids: string[] }, ctx: Context) => // (await ctx.accounts[account].getMessages(ids)).map(msg => messageResolver(msg)) // };