add some sort of primary function. note: due to SP's api, it is buggy.

This commit is contained in:
bee 2022-02-28 21:34:58 -08:00
parent 8a63bee22b
commit b47d5db80b
No known key found for this signature in database
GPG key ID: 70EECBF29DA75D8B

View file

@ -54,26 +54,48 @@ generateResponse = async (target, data) => {
await SimplyAPI.findMemberById(o.content.member) await SimplyAPI.findMemberById(o.content.member)
.then(async (member) => { .then(async (member) => {
if (o.operationType == "insert") { if (o.operationType == "insert") {
// get current fronters and add new fronter
let fronters = await getPKFronters() let fronters = await getPKFronters()
fronters.push(member.pkId) fronters.push(member.pkId)
// find the "primary" fronter to move to the first element in the list
let primary = findPrimary()
if (primary) {
if (fronters.indexOf(primary) > 0) {
fronters.splice(fronters.indexOf(primary), 1)
fronters.unshift(primary)
}
}
// post the new switch
axios.post(`${pkUrl}/systems/${config.pk_system}/switches`, JSON.stringify({"members": fronters}), { axios.post(`${pkUrl}/systems/${config.pk_system}/switches`, JSON.stringify({"members": fronters}), {
headers: pkHeader headers: pkHeader
}) })
.catch(err => console.error(err.toJSON().message)); .catch(err => console.error(err.toJSON().message))
response += '\n' + member.name + ' was added to the front.' response += '\n' + member.name + ' was added to the front.'
return return
} }
else { else {
// get current fronters and patch the list
let fronters = await getPKFronters() let fronters = await getPKFronters()
let index = fronters.indexOf(member.pkId) let index = fronters.indexOf(member.pkId)
fronters.splice(index, 1) fronters.splice(index, 1)
// find the "primary" fronter to move to the first element in the list
let primary = findPrimary()
if (primary) {
if (fronters.indexOf(primary) > 0) {
fronters.splice(fronters.indexOf(primary), 1)
fronters.unshift(primary)
}
}
// post the new switch
axios.post(`${pkUrl}/systems/${config.pk_system}/switches`, JSON.stringify({ "members": fronters }), { axios.post(`${pkUrl}/systems/${config.pk_system}/switches`, JSON.stringify({ "members": fronters }), {
headers: pkHeader headers: pkHeader
}) })
.catch(err => console.error(err.message)); .catch(err => console.error(err.message))
response += '\n' + member.name + ' was removed from the front.' response += '\n' + member.name + ' was removed from the front.'
return return
@ -125,6 +147,23 @@ getPKFronters = async () => {
return members return members
} }
findPrimary = async () => {
let found = false
let fronters = await SimplyAPI.getFronters()
return new Promise(async (resolve) => {
await asyncForEach(fronters, async (fronter) => {
if (!fronter.customStatus) return
if (fronter.customStatus.toLowerCase().includes("primary")) {
found = true
let member = await SimplyAPI.findMemberById(fronter.content.member)
resolve(member.pkId)
}
})
if (!found) resolve(null)
})
}
asyncForEach = async (array, callback) => { asyncForEach = async (array, callback) => {
for (let index = 0; index < array.length; index++) { for (let index = 0; index < array.length; index++) {
await callback(array[index], index, array); await callback(array[index], index, array);