mirror of
https://github.com/HeyPuter/puter.git
synced 2026-08-25 07:27:04 +00:00
dev: icon_size for taskbar items
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user