Added API method to create "Note" with different visibilities
This commit is contained in:
parent
5610cde131
commit
c6958de973
|
@ -111,11 +111,57 @@ async function getQuizs(toActor, filters, proj) {
|
|||
return quizs
|
||||
}
|
||||
|
||||
async function sendNote(from, to, html, modc) {
|
||||
modc = modc || function(a){ return a }
|
||||
const actor = await apex.store.getObject(from, true)
|
||||
if (actor === null)
|
||||
return false
|
||||
|
||||
const topublic = to === 'public'
|
||||
const tounlisted = to === 'unlisted'
|
||||
const tofollowers = to === 'followers'
|
||||
if (typeof to === 'string')
|
||||
to = (tofollowers || topublic || tounlisted)
|
||||
? { url: utils.firstIfArray(actor.followers) }
|
||||
: await api.accounts.getAccount(to)
|
||||
if ([false, undefined, null].includes(to))
|
||||
return false
|
||||
|
||||
const id = utils.apRandomURL()
|
||||
var payload = {
|
||||
id: id+'#activity',
|
||||
type: 'Create',
|
||||
actor: actor.id,
|
||||
to: [ to.url ],
|
||||
object: {
|
||||
id,
|
||||
type: 'Note',
|
||||
content: html,
|
||||
attributedTo: actor.id,
|
||||
to: [ to.url ],
|
||||
},
|
||||
}
|
||||
if (typeof to.acct === 'string')
|
||||
payload.object.tag = [{
|
||||
type: 'Mention', href: to.url, name: to.acct,
|
||||
}]
|
||||
if (tounlisted || topublic)
|
||||
payload.cc = ['as:Public']
|
||||
if (topublic)
|
||||
payload.object.to.unshift('as:Public')
|
||||
|
||||
payload = modc(payload)
|
||||
await apex.addToOutbox(actor, payload)
|
||||
await apex.store.saveObject(payload.object)
|
||||
return true
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
quizParse,
|
||||
quizCreate,
|
||||
isFediloveQuiz,
|
||||
getQuizs,
|
||||
sendNote,
|
||||
quizs: {
|
||||
get: [auth.enforceSession, async (req, res) => {
|
||||
var filters = {}
|
||||
|
@ -135,7 +181,7 @@ module.exports = {
|
|||
if ([false, undefined, null].includes(quiz))
|
||||
return res.json({ error: 'invalid_params' })
|
||||
|
||||
if (quiz.responses !== undefined)
|
||||
if (false && quiz.responses !== undefined)
|
||||
return res.json({ error: 'already_sent_quiz' })
|
||||
|
||||
var responses = []
|
||||
|
@ -154,30 +200,8 @@ module.exports = {
|
|||
if (html === false)
|
||||
return res.json({ error: 'invalid_params' })
|
||||
|
||||
const id = utils.apRandomURL()
|
||||
const actor = await apex.store.getObject(
|
||||
apID(res.locals.user.username), true)
|
||||
const payload = {
|
||||
id: id+'#activity',
|
||||
type: 'Create',
|
||||
actor: actor.id,
|
||||
to: quiz.from.url,
|
||||
object: {
|
||||
id,
|
||||
type: 'Note',
|
||||
content: html,
|
||||
to: quiz.from.url,
|
||||
attributedTo: actor.id,
|
||||
inReplyTo: quiz.replyTo,
|
||||
tag: [{
|
||||
type: 'Mention',
|
||||
href: quiz.from.url,
|
||||
name: quiz.from.acct,
|
||||
}],
|
||||
},
|
||||
}
|
||||
await apex.addToOutbox(actor, payload)
|
||||
await apex.store.saveObject(payload.object)
|
||||
await sendNote(apID(res.locals.user.username), quiz.from, html,
|
||||
function(o){ o.object.inReplyTo = quiz.replyTo; return o })
|
||||
return res.json({ result: 1 })
|
||||
}],
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue