Whalebird-desktop-client-ma.../src/renderer/store/TimelineSpace/Contents/Cards/Toot.js

78 lines
2.6 KiB
JavaScript

import Mastodon from 'mastodon-api'
import { ipcRenderer } from 'electron'
const Toot = {
namespaced: true,
state: {},
mutations: {},
actions: {
reblog ({ state, commit, rootState }, message) {
return new Promise((resolve, reject) => {
const client = new Mastodon(
{
access_token: rootState.TimelineSpace.account.accessToken,
api_url: rootState.TimelineSpace.account.baseURL + '/api/v1'
}
)
client.post(`/statuses/${message.id}/reblog`, {}, (err, data, res) => {
if (err) return reject(err)
// API returns new status when reblog.
// Reblog target status is in the data.reblog.
// So I send data.reblog as status for update local timeline.
commit('TimelineSpace/updateToot', data.reblog, { root: true })
ipcRenderer.send('operation-sound')
resolve(data.reblog)
})
})
},
unreblog ({ state, commit, rootState }, message) {
return new Promise((resolve, reject) => {
const client = new Mastodon(
{
access_token: rootState.TimelineSpace.account.accessToken,
api_url: rootState.TimelineSpace.account.baseURL + '/api/v1'
}
)
client.post(`/statuses/${message.id}/unreblog`, {}, (err, data, res) => {
if (err) return reject(err)
commit('TimelineSpace/updateToot', data, { root: true })
resolve(data)
})
})
},
addFavourite ({ state, commit, rootState }, message) {
return new Promise((resolve, reject) => {
const client = new Mastodon(
{
access_token: rootState.TimelineSpace.account.accessToken,
api_url: rootState.TimelineSpace.account.baseURL + '/api/v1'
}
)
client.post(`/statuses/${message.id}/favourite`, {}, (err, data, res) => {
if (err) return reject(err)
commit('TimelineSpace/updateToot', data, { root: true })
ipcRenderer.send('operation-sound')
resolve(data)
})
})
},
removeFavourite ({ state, commit, rootState }, message) {
return new Promise((resolve, reject) => {
const client = new Mastodon(
{
access_token: rootState.TimelineSpace.account.accessToken,
api_url: rootState.TimelineSpace.account.baseURL + '/api/v1'
}
)
client.post(`/statuses/${message.id}/unfavourite`, {}, (err, data, res) => {
if (err) return reject(err)
commit('TimelineSpace/updateToot', data, { root: true })
resolve(data)
})
})
}
}
}
export default Toot