send/server/state.js

82 lines
2.3 KiB
JavaScript
Raw Normal View History

const config = require('./config');
const layout = require('./layout');
2018-08-07 22:40:17 +00:00
const assets = require('../common/assets');
const getTranslator = require('./locale');
2018-11-20 20:07:47 +00:00
const { getFxaConfig } = require('./fxa');
const fs = require('fs');
const path = require('path');
2018-11-20 20:07:47 +00:00
module.exports = async function(req) {
const locale = (() => {
if (config.custom_locale != '' && fs.existsSync(path.join(__dirname,'../public/locales',config.custom_locale))) {
return config.custom_locale;
}
else {
return req.language || 'en-US';
}
})();
2018-11-20 20:07:47 +00:00
let authConfig = null;
2019-03-14 20:17:47 +00:00
let robots = 'none';
if (req.route && req.route.path === '/') {
robots = 'all';
}
2018-11-20 20:07:47 +00:00
if (config.fxa_client_id) {
try {
authConfig = await getFxaConfig();
authConfig.client_id = config.fxa_client_id;
} catch (e) {
// continue without accounts
}
}
2019-04-26 20:30:33 +00:00
const prefs = {};
if (config.survey_url) {
prefs.surveyUrl = config.survey_url;
}
const baseUrl = config.deriveBaseUrl(req);
2022-04-12 13:58:58 +00:00
const uiAssets = {
android_chrome_192px: assets.get('android-chrome-192x192.png'),
android_chrome_512px: assets.get('android-chrome-512x512.png'),
apple_touch_icon: assets.get('apple-touch-icon.png'),
favicon_16px: assets.get('favicon-16x16.png'),
favicon_32px: assets.get('favicon-32x32.png'),
icon: assets.get('icon.svg'),
safari_pinned_tab: assets.get('safari-pinned-tab.svg'),
facebook: baseUrl + '/' + assets.get('send-fb.jpg'),
twitter: baseUrl + '/' + assets.get('send-twitter.jpg'),
wordmark: assets.get('wordmark.svg') + '#logo',
custom_css: assets.get('undefined')
2022-04-12 13:58:58 +00:00
};
Object.keys(uiAssets).forEach(index => {
if (config.ui_custom_assets[index] !== '')
uiAssets[index] = config.ui_custom_assets[index];
});
return {
archive: {
numFiles: 0
},
locale,
capabilities: { account: false },
translate: getTranslator(locale),
title: config.custom_title,
description: config.custom_description,
baseUrl,
2022-04-12 13:58:58 +00:00
ui: {
colors: {
primary: config.ui_color_primary,
accent: config.ui_color_accent
},
assets: uiAssets
},
storage: {
files: []
},
fileInfo: {},
2018-08-07 22:40:17 +00:00
cspNonce: req.cspNonce,
user: { avatar: assets.get('user.svg'), loggedIn: false },
2019-03-14 20:17:47 +00:00
robots,
2018-11-20 20:07:47 +00:00
authConfig,
2019-04-26 20:30:33 +00:00
prefs,
layout
};
};