TO MERGE : Contact page from Admin or Environment Variable (#1401)
* Contact page from Admin or Environment Variable * Get contact page from admin by pusher * Changes requested * Modify contactPageStore management * documentation environment variables Co-authored-by: Gregoire Parant <g.parant@thecodingmachine.com>
This commit is contained in:
parent
ccea46fe2b
commit
3f1c5246f8
@ -22,3 +22,6 @@ MAX_USERNAME_LENGTH=8
|
|||||||
OPID_CLIENT_ID=
|
OPID_CLIENT_ID=
|
||||||
OPID_CLIENT_SECRET=
|
OPID_CLIENT_SECRET=
|
||||||
OPID_CLIENT_ISSUER=
|
OPID_CLIENT_ISSUER=
|
||||||
|
|
||||||
|
# If you want to have a contact page in your menu, you MUST set CONTACT_URL to the URL of the page that you want
|
||||||
|
CONTACT_URL=
|
@ -1,9 +1,8 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import {CONTACT_URL} from "../../Enum/EnvironmentVariable";
|
import {contactPageStore} from "../../Stores/MenuStore";
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<iframe title="contact" src="{CONTACT_URL}"></iframe>
|
<iframe title="contact" src="{$contactPageStore}" allow="clipboard-read; clipboard-write self {$contactPageStore}" allowfullscreen></iframe>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
iframe {
|
iframe {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import Axios from "axios";
|
import Axios from "axios";
|
||||||
import { PUSHER_URL } from "../Enum/EnvironmentVariable";
|
import { CONTACT_URL, PUSHER_URL } from "../Enum/EnvironmentVariable";
|
||||||
import type { CharacterTexture } from "./LocalUser";
|
import type { CharacterTexture } from "./LocalUser";
|
||||||
import { localUserStore } from "./LocalUserStore";
|
import { localUserStore } from "./LocalUserStore";
|
||||||
|
|
||||||
@ -20,6 +20,7 @@ export class Room {
|
|||||||
private _textures: CharacterTexture[] | undefined;
|
private _textures: CharacterTexture[] | undefined;
|
||||||
private instance: string | undefined;
|
private instance: string | undefined;
|
||||||
private readonly _search: URLSearchParams;
|
private readonly _search: URLSearchParams;
|
||||||
|
private _contactPage: string | undefined;
|
||||||
|
|
||||||
private constructor(private roomUrl: URL) {
|
private constructor(private roomUrl: URL) {
|
||||||
this.id = roomUrl.pathname;
|
this.id = roomUrl.pathname;
|
||||||
@ -105,6 +106,7 @@ export class Room {
|
|||||||
this._textures = data.textures;
|
this._textures = data.textures;
|
||||||
this._authenticationMandatory = data.authenticationMandatory || false;
|
this._authenticationMandatory = data.authenticationMandatory || false;
|
||||||
this._iframeAuthentication = data.iframeAuthentication;
|
this._iframeAuthentication = data.iframeAuthentication;
|
||||||
|
this._contactPage = data.contactPage || CONTACT_URL;
|
||||||
return new MapDetail(data.mapUrl, data.textures);
|
return new MapDetail(data.mapUrl, data.textures);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -198,4 +200,8 @@ export class Room {
|
|||||||
get iframeAuthentication(): string | undefined {
|
get iframeAuthentication(): string | undefined {
|
||||||
return this._iframeAuthentication;
|
return this._iframeAuthentication;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get contactPage(): string | undefined {
|
||||||
|
return this._contactPage;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -96,6 +96,8 @@ import { EmbeddedWebsiteManager } from "./EmbeddedWebsiteManager";
|
|||||||
import { GameMapPropertiesListener } from "./GameMapPropertiesListener";
|
import { GameMapPropertiesListener } from "./GameMapPropertiesListener";
|
||||||
import { analyticsClient } from "../../Administration/AnalyticsClient";
|
import { analyticsClient } from "../../Administration/AnalyticsClient";
|
||||||
import { get } from "svelte/store";
|
import { get } from "svelte/store";
|
||||||
|
import type { RadialMenuItem } from "../Components/RadialMenu";
|
||||||
|
import { contactPageStore } from "../../Stores/MenuStore";
|
||||||
|
|
||||||
export interface GameSceneInitInterface {
|
export interface GameSceneInitInterface {
|
||||||
initPosition: PointInterface | null;
|
initPosition: PointInterface | null;
|
||||||
@ -431,6 +433,7 @@ export class GameScene extends DirtyScene {
|
|||||||
gameManager.gameSceneIsCreated(this);
|
gameManager.gameSceneIsCreated(this);
|
||||||
urlManager.pushRoomIdToUrl(this.room);
|
urlManager.pushRoomIdToUrl(this.room);
|
||||||
analyticsClient.enteredRoom(this.room.id);
|
analyticsClient.enteredRoom(this.room.id);
|
||||||
|
contactPageStore.set(this.room.contactPage);
|
||||||
|
|
||||||
if (touchScreenManager.supportTouchScreen) {
|
if (touchScreenManager.supportTouchScreen) {
|
||||||
this.pinchManager = new PinchManager(this);
|
this.pinchManager = new PinchManager(this);
|
||||||
|
@ -74,13 +74,18 @@ function createSubMenusStore() {
|
|||||||
|
|
||||||
export const subMenusStore = createSubMenusStore();
|
export const subMenusStore = createSubMenusStore();
|
||||||
|
|
||||||
|
export const contactPageStore = writable<string | undefined>(CONTACT_URL);
|
||||||
|
|
||||||
export function checkSubMenuToShow() {
|
export function checkSubMenuToShow() {
|
||||||
if (!get(userIsAdminStore)) {
|
subMenusStore.removeMenu(SubMenusInterface.globalMessages);
|
||||||
subMenusStore.removeMenu(SubMenusInterface.globalMessages);
|
subMenusStore.removeMenu(SubMenusInterface.contact);
|
||||||
|
|
||||||
|
if (get(userIsAdminStore)) {
|
||||||
|
subMenusStore.addMenu(SubMenusInterface.globalMessages);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CONTACT_URL === undefined) {
|
if (get(contactPageStore) !== undefined) {
|
||||||
subMenusStore.removeMenu(SubMenusInterface.contact);
|
subMenusStore.addMenu(SubMenusInterface.contact);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,6 +62,7 @@ export class MapController extends BaseController {
|
|||||||
roomSlug: "", // Deprecated
|
roomSlug: "", // Deprecated
|
||||||
tags: [],
|
tags: [],
|
||||||
textures: [],
|
textures: [],
|
||||||
|
contactPage: undefined,
|
||||||
} as MapDetailsData)
|
} as MapDetailsData)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -15,6 +15,8 @@ export const isMapDetailsData = new tg.IsInterface()
|
|||||||
policy_type: isNumber, //isNumericEnum(GameRoomPolicyTypes),
|
policy_type: isNumber, //isNumericEnum(GameRoomPolicyTypes),
|
||||||
tags: tg.isArray(tg.isString),
|
tags: tg.isArray(tg.isString),
|
||||||
textures: tg.isArray(isCharacterTexture),
|
textures: tg.isArray(isCharacterTexture),
|
||||||
|
contactPage: tg.isUnion(tg.isString, tg.isUndefined),
|
||||||
})
|
})
|
||||||
.get();
|
.get();
|
||||||
|
|
||||||
export type MapDetailsData = tg.GuardedType<typeof isMapDetailsData>;
|
export type MapDetailsData = tg.GuardedType<typeof isMapDetailsData>;
|
||||||
|
Loading…
Reference in New Issue
Block a user