dashboard-core/theme/dbd-soft-ui/pages/admin/feed.js
Jonny_Bro (Nikita) 08275381dc integrate theme
2023-06-19 14:21:58 +05:00

193 lines
7.7 KiB
JavaScript

const db = require('quick.db')
const { icons, otherIcons } = require('../../icons')
module.exports = {
page: '/feed',
execute: async (req, res, app, config, themeConfig, info) => {
if (req.query.action === 'delete') {
const deleteFeed = req.query.feed
if (!deleteFeed) return res.redirect('/admin?error=invalidFeed')
if (!/^\d+$/.test(deleteFeed))
return res.redirect('/admin?error=invalidFeed')
if (deleteFeed !== '1' && deleteFeed !== '2' && deleteFeed !== '3')
return res.redirect('/admin?error=invalidFeed')
if (deleteFeed === '1') {
if (!db.get('feeds.one'))
return res.redirect('/admin?error=invalidFeed')
if (db.get('feeds.two')) {
const f = await db.get('feeds.two')
await db.set('feeds.one', {
color: f.color,
description: f.description,
published: f.published,
icon: f.icon,
diff: f.diff
})
} else {
await db.delete('feeds.one')
}
if (db.get('feeds.three')) {
const f = await db.get('feeds.three')
await db.set('feeds.two', {
color: f.color,
description: f.description,
published: f.published,
icon: f.icon,
diff: f.diff
})
await db.delete('feeds.three')
}
} else if (deleteFeed === '2') {
if (!db.get('feeds.two'))
return res.redirect('/admin?error=invalidFeed')
if (db.get('feeds.one')) {
const f = await db.get('feeds.one')
await db.set('feeds.two', {
color: f.color,
description: f.description,
published: f.published,
icon: f.icon,
diff: f.diff
})
await db.delete('feeds.one')
} else {
await db.delete('feeds.two')
}
} else if (deleteFeed === '3') {
if (!db.get('feeds.three'))
return res.redirect('/admin?error=invalidFeed')
await db.delete('feeds.three')
if (db.get('feeds.two')) {
const f = await db.get('feeds.two')
await db.set('feeds.three', {
color: f.color,
description: f.description,
published: f.published,
icon: f.icon,
diff: f.diff
})
}
if (db.get('feeds.one')) {
const f = await db.get('feeds.one')
await db.set('feeds.two', {
color: f.color,
description: f.description,
published: f.published,
icon: f.icon,
diff: f.diff
})
}
}
return res.redirect('/admin')
} else if (req.query.action === 'create') {
const { color, description, icon } = req.query
if (!color || !description || !icon)
return res.redirect('/admin?error=missingData')
if (
color !== 'red' &&
color !== 'orange' &&
color !== 'pink' &&
color !== 'gray' &&
color !== 'green' &&
color !== 'blue' &&
color !== 'dark'
)
return res.redirect('/admin?error=invalidData')
if (description.length < 3 || description.length > 128)
return res.redirect('/admin?error=invalidData')
if (!icons.includes(icon) && !otherIcons.includes(icon))
return res.redirect('/admin?error=invalidData')
let diff
let col
if (otherIcons.includes(icon)) diff = true
if (color === 'red') col = 'danger'
if (color === 'orange') col = 'warning'
if (color === 'pink') col = 'primary'
if (color === 'gray') col = 'secondary'
if (color === 'green') col = 'success'
if (color === 'blue') col = 'info'
if (color === 'dark') col = 'dark'
if (
db.get('feeds.three') &&
db.get('feeds.two') &&
db.get('feeds.one')
) {
await db.delete('feeds.one')
const f3 = db.get('feeds.three')
const f2 = db.get('feeds.two')
await db.set('feeds.two', {
color: f3.color,
description: f3.description,
published: f3.published,
icon: f3.icon,
diff: f3.diff
})
await db.set('feeds.one', {
color: f2.color,
description: f2.description,
published: f2.published,
icon: f2.icon,
diff: f2.diff
})
await db.set('feeds.three', {
color: col,
description: description,
published: Date.now(),
icon: icon,
diff: diff
})
} else {
if (!db.get('feeds.three'))
await db.set('feeds.three', {
color: col,
description: description,
published: Date.now(),
icon: icon,
diff: diff
})
else if (!db.get('feeds.two')) {
const f3 = db.get('feeds.three')
await db.set('feeds.two', {
color: f3.color,
description: f3.description,
published: f3.published,
icon: f3.icon,
diff: f3.diff
})
await db.set('feeds.three', {
color: col,
description: description,
published: Date.now(),
icon: icon,
diff: diff
})
} else {
const f3 = db.get('feeds.three')
const f2 = db.get('feeds.two')
await db.set('feeds.one', {
color: f2.color,
description: f2.description,
published: f2.published,
icon: f2.icon,
diff: f2.diff
})
await db.set('feeds.two', {
color: f3.color,
description: f3.description,
published: f3.published,
icon: f3.icon,
diff: f3.diff
})
await db.set('feeds.three', {
color: col,
description: description,
published: Date.now(),
icon: icon,
diff: diff
})
}
}
return res.redirect('/admin')
}
}
}