mirror of
https://github.com/CamHenlin/MessagesForMacintosh.git
synced 2024-11-22 10:32:39 +00:00
160 lines
3.1 KiB
JavaScript
160 lines
3.1 KiB
JavaScript
require('cross-fetch/polyfill')
|
|
const ApolloClient = require('apollo-boost').ApolloClient;
|
|
const InMemoryCache = require('apollo-cache-inmemory').InMemoryCache;
|
|
const createHttpLink = require('apollo-link-http').createHttpLink;
|
|
const gql = require('graphql-tag')
|
|
|
|
const defaultOptions = {
|
|
watchQuery: {
|
|
fetchPolicy: 'no-cache',
|
|
errorPolicy: 'ignore',
|
|
},
|
|
query: {
|
|
fetchPolicy: 'no-cache',
|
|
errorPolicy: 'ignore',
|
|
},
|
|
}
|
|
|
|
let client
|
|
|
|
|
|
class iMessageClient {
|
|
|
|
async getMessages (chatId, page) {
|
|
|
|
console.log(`get messages for chat ID: ${chatId}`)
|
|
|
|
let result = await client.query({
|
|
query: gql`query getMessages {
|
|
getMessages(chatId: "${chatId}", page: "${page}") {
|
|
chatter
|
|
text
|
|
}
|
|
}`
|
|
})
|
|
|
|
let messages = result.data.getMessages
|
|
let messageOutput = ``
|
|
const maxPerLine = 20000
|
|
console.log(`return messages from get messages:`)
|
|
console.log(messages)
|
|
|
|
let firstMessage = true
|
|
|
|
if (!messages) {
|
|
|
|
return ``
|
|
}
|
|
|
|
for (const message of messages) {
|
|
|
|
if (firstMessage) {
|
|
|
|
messageOutput = `${message.chatter}: ${message.text}`
|
|
} else {
|
|
|
|
messageOutput = `${messageOutput}ENDLASTMESSAGE${message.chatter}: ${message.text}`
|
|
}
|
|
|
|
firstMessage = false
|
|
}
|
|
|
|
return messageOutput
|
|
}
|
|
|
|
|
|
async sendMessage (chatId, message) {
|
|
|
|
console.log(`send messages for chat ID: ${chatId} ${message}`)
|
|
|
|
let result = await client.query({
|
|
query: gql`query sendMessage {
|
|
sendMessage(chatId: "${chatId}", message: "${message}") {
|
|
chatter
|
|
text
|
|
}
|
|
}`
|
|
})
|
|
|
|
let messages = result.data.sendMessage
|
|
let messageOutput = ``
|
|
const maxPerLine = 20000
|
|
|
|
let firstMessage = true
|
|
|
|
if (!messages) {
|
|
|
|
return ``
|
|
}
|
|
|
|
for (const message of messages) {
|
|
|
|
if (firstMessage) {
|
|
|
|
messageOutput = `${message.chatter}: ${message.text}`
|
|
} else {
|
|
|
|
messageOutput = `${messageOutput}ENDLASTMESSAGE${message.chatter}: ${message.text}`
|
|
}
|
|
|
|
firstMessage = false
|
|
}
|
|
|
|
return messageOutput
|
|
}
|
|
|
|
async getChats () {
|
|
|
|
let result = await client.query({
|
|
query: gql`query getChats {
|
|
getChats {
|
|
name
|
|
friendlyName
|
|
}
|
|
}`
|
|
})
|
|
|
|
let chats = result.data.getChats
|
|
let friendlyNameStrings = ``
|
|
|
|
if (!chats) {
|
|
|
|
return ``
|
|
}
|
|
|
|
for (let chat of chats) {
|
|
|
|
friendlyNameStrings = `${friendlyNameStrings},${chat.friendlyName.replace(/,/g, '')}`
|
|
}
|
|
|
|
friendlyNameStrings = friendlyNameStrings.substring(1, friendlyNameStrings.length)
|
|
|
|
return friendlyNameStrings
|
|
}
|
|
|
|
setIPAddress (IPAddress) {
|
|
|
|
try {
|
|
|
|
client = new ApolloClient({
|
|
uri: `${IPAddress}:4000/`,
|
|
cache: new InMemoryCache(),
|
|
link: new createHttpLink({
|
|
uri: `${IPAddress}:4000/`
|
|
}),
|
|
defaultOptions
|
|
});
|
|
} catch (err) {
|
|
console.log(`error instantiating the ApolloClient`)
|
|
console.log(err)
|
|
|
|
return `failure`
|
|
}
|
|
|
|
return `success`
|
|
}
|
|
}
|
|
|
|
module.exports = iMessageClient
|
|
|