mirror of
https://github.com/nfonteyne/octane-website.git
synced 2026-09-03 23:24:48 +02:00
update: ics utl verification, custom in app name
This commit is contained in:
parent
d296494d0e
commit
b46c727c85
9 changed files with 149 additions and 23 deletions
|
|
@ -93,9 +93,15 @@ router.post(
|
|||
if (!icsUrl || !icsUrl.trim()) {
|
||||
return res.status(400).json({ error: 'ics_url_required' });
|
||||
}
|
||||
const trimmedUrl = icsUrl.trim();
|
||||
try {
|
||||
await calendarSync.testFeed(trimmedUrl);
|
||||
} catch (err) {
|
||||
return res.status(400).json({ error: 'ics_url_unreachable', message: err.message });
|
||||
}
|
||||
const feed = await calendarRepo.addFeed(req.user.id, {
|
||||
label: label ? label.trim() : null,
|
||||
icsUrl: icsUrl.trim(),
|
||||
icsUrl: trimmedUrl,
|
||||
});
|
||||
res.status(201).json({ id: feed.id, label: feed.label, icsUrl: feed.ics_url });
|
||||
})
|
||||
|
|
@ -142,9 +148,15 @@ router.post(
|
|||
if (!user) {
|
||||
return res.status(404).json({ error: 'user_not_found' });
|
||||
}
|
||||
const trimmedUrl = icsUrl.trim();
|
||||
try {
|
||||
await calendarSync.testFeed(trimmedUrl);
|
||||
} catch (err) {
|
||||
return res.status(400).json({ error: 'ics_url_unreachable', message: err.message });
|
||||
}
|
||||
const feed = await calendarRepo.addFeed(userId, {
|
||||
label: label ? label.trim() : null,
|
||||
icsUrl: icsUrl.trim(),
|
||||
icsUrl: trimmedUrl,
|
||||
});
|
||||
res.status(201).json({ id: feed.id, userId: feed.user_id, label: feed.label, icsUrl: feed.ics_url });
|
||||
})
|
||||
|
|
|
|||
|
|
@ -13,10 +13,11 @@ function authentikAccountUrl() {
|
|||
router.get(
|
||||
'/me',
|
||||
asyncHandler(async (req, res) => {
|
||||
const { id, name, username, email, avatar_url, is_admin } = req.user;
|
||||
const { id, name, display_name, username, email, avatar_url, is_admin } = req.user;
|
||||
res.json({
|
||||
id,
|
||||
name,
|
||||
hasCustomName: !!display_name,
|
||||
username,
|
||||
email,
|
||||
avatarUrl: avatar_url,
|
||||
|
|
@ -29,11 +30,12 @@ router.get(
|
|||
router.get(
|
||||
'/me/profile',
|
||||
asyncHandler(async (req, res) => {
|
||||
const { id, name, username, email, avatar_url, groups, is_admin, created_at } = req.user;
|
||||
const { id, name, display_name, username, email, avatar_url, groups, is_admin, created_at } = req.user;
|
||||
const stats = await usersRepo.getActivityStats(id);
|
||||
res.json({
|
||||
id,
|
||||
name,
|
||||
hasCustomName: !!display_name,
|
||||
username,
|
||||
email,
|
||||
avatarUrl: avatar_url,
|
||||
|
|
@ -46,4 +48,16 @@ router.get(
|
|||
})
|
||||
);
|
||||
|
||||
router.patch(
|
||||
'/me/display-name',
|
||||
asyncHandler(async (req, res) => {
|
||||
const { displayName } = req.body || {};
|
||||
if (displayName && displayName.trim().length > 60) {
|
||||
return res.status(400).json({ error: 'display_name_too_long' });
|
||||
}
|
||||
const user = await usersRepo.updateDisplayName(req.user.id, displayName || '');
|
||||
res.json({ name: user.name, hasCustomName: !!user.display_name });
|
||||
})
|
||||
);
|
||||
|
||||
module.exports = router;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue