import sessions from"../../sessions.mjs";import{Module}from"../../packages/_module.mjs";import{PASSWORD_SAFE_STRING,USER_ROLES}from"../../../common/constants.mjs";import View from"./view.mjs";export default class PlayersView extends View{route="/players";socket="getPlayersData";_template="players";_methods=["get"];async handleGet(e,s){const{db:t,game:r}=global;if(!r.world)return s.redirect(`${e.baseUrl}/setup`),!1;const a=await t.User.getUsers();if(!PlayersView.#e(a,e.user))return s.redirect(`${e.baseUrl}/join`),!1;const o=r.world.background,i=o?`body.background {\n --background-url: url("${URL.parseSafe(o)?o:foundry.utils.getRoute(o,{prefix:express.routePrefix})}");\n }`:"",l=View._getStaticContent({setup:!0});s.render(this._template,{layout:"setup",bodyClass:["auth","players","flexcol",o?"background":"",`theme-${config.options.cssTheme}`].filterJoin(" "),pageTitle:r.world.title,messages:sessions.getMessages(e,{clear:!1}),scripts:l.scripts,styles:l.styles,inlineStyles:i})}async handleSocket(e,s){if(!game.world||!game.ready)return s({});const t=e.worlds[game.world.id]||null;return e.admin||PlayersView.#e(game.users,t)?s({modules:Module.getPackages({coreTranslation:!0}).map((e=>e.vend())),options:{language:global.config.options.language},passwordString:PASSWORD_SAFE_STRING,release:global.release,settings:await db.Setting.dump(),userId:t,users:await db.User.dump()}):s({})}static#e(e,s){return!e.some((e=>e.hasRole(USER_ROLES.GAMEMASTER)))||!!s&&(e.find((e=>e._id===s))?.isGM??!1)}}