dev: icon_size for taskbar items

This commit is contained in:
KernelDeimos
2024-12-20 16:39:05 -05:00
parent 530db18bae
commit e732859ff8
2 changed files with 29 additions and 2 deletions
+18 -1
View File
@@ -31,6 +31,7 @@ const { LLRmNode } = require('./filesystem/ll_operations/ll_rmnode');
const { Context } = require('./util/context');
const { NodeUIDSelector } = require('./filesystem/node/selectors');
const { PathBuilder } = require('./util/pathutil');
const { stream_to_buffer } = require('./util/streamutil.js');
let systemfs = null;
let services = null;
@@ -1461,7 +1462,7 @@ async function suggest_app_for_fsentry(fsentry, options){
});
}
async function get_taskbar_items(user) {
async function get_taskbar_items(user, { icon_size } = {}) {
/** @type BaseDatabaseAccessService */
const db = services.get('database').get(DB_WRITE, 'filesystem');
@@ -1521,6 +1522,22 @@ async function get_taskbar_items(user) {
delete item.approved_for_listing;
delete item.approved_for_opening_items;
const svc_appIcon = services.get('app-icon');
const icon_result = await svc_appIcon.get_icon_stream({
app_icon: item.icon,
app_uid: item.uid,
size: icon_size,
});
if ( icon_result.data_url ) {
item.icon = icon_result.data_url;
} else {
const buffer = await stream_to_buffer(icon_result.stream);
const resp_data_url = `data:${icon_result.mime};base64,${buffer.toString('base64')}`;
item.icon = resp_data_url;
}
// add to final object
taskbar_items.push(item)
}
+11 -1
View File
@@ -50,6 +50,14 @@ const WHOAMI_GET = eggspress('/whoami', {
const is_user = actor.type instanceof UserActorType;
if ( req.query.icon_size ) {
const ALLOWED_SIZES = ['16', '32', '64', '128', '256', '512'];
if ( ! ALLOWED_SIZES.includes(req.query.icon_size) ) {
res.status(400).send({ error: 'Invalid icon_size' });
}
}
// send user object
const details = {
username: req.user.username,
@@ -63,7 +71,9 @@ const WHOAMI_GET = eggspress('/whoami', {
desktop_bg_color: req.user.desktop_bg_color,
desktop_bg_fit: req.user.desktop_bg_fit,
is_temp: (req.user.password === null && req.user.email === null),
taskbar_items: await get_taskbar_items(req.user),
taskbar_items: await get_taskbar_items(req.user, {
...(req.query.icon_size ? { icon_size: req.query.icon_size } : {})
}),
referral_code: req.user.referral_code,
otp: !! req.user.otp_enabled,
human_readable_age: timeago.format(