Skip to content

Commit

Permalink
Rework player authentication api
Browse files Browse the repository at this point in the history
  • Loading branch information
4ian committed May 1, 2024
1 parent b394207 commit 3f713f8
Show file tree
Hide file tree
Showing 6 changed files with 364 additions and 345 deletions.
98 changes: 39 additions & 59 deletions Extensions/Leaderboards/leaderboardstools.ts
Original file line number Diff line number Diff line change
Expand Up @@ -223,9 +223,8 @@ namespace gdjs {
let _leaderboardViewIframeLoading: boolean = false;
let _leaderboardViewIframeLoaded: boolean = false;
let _errorTimeoutId: NodeJS.Timeout | null = null;
let _leaderboardMessageListener:
| ((event: MessageEvent) => void)
| null = null;
let _leaderboardMessageListener: ((event: MessageEvent) => void) | null =
null;

const _loaderContainer: HTMLDivElement = document.createElement('div');
_loaderContainer.style.backgroundColor = '#000000';
Expand Down Expand Up @@ -394,10 +393,8 @@ namespace gdjs {
new ScoreSavingState());

try {
const {
closeSaving,
closeSavingWithError,
} = scoreSavingState.startSaving({ playerName, score });
const { closeSaving, closeSavingWithError } =
scoreSavingState.startSaving({ playerName, score });

try {
const leaderboardEntry = await saveScore({
Expand Down Expand Up @@ -440,10 +437,8 @@ namespace gdjs {
new ScoreSavingState());

try {
const {
closeSaving,
closeSavingWithError,
} = scoreSavingState.startSaving({ playerId, score });
const { closeSaving, closeSavingWithError } =
scoreSavingState.startSaving({ playerId, score });

try {
const leaderboardEntryId = await saveScore({
Expand Down Expand Up @@ -584,61 +579,51 @@ namespace gdjs {
});
break;
case 'openPlayerAuthentication':
gdjs.playerAuthentication.openAuthenticationWindow(runtimeScene, {
onDismissed: () => {
gdjs.playerAuthentication
.openAuthenticationWindow(runtimeScene)
.promise.then(({ status }) => {
if (
_leaderboardViewIframe &&
_leaderboardViewIframe.contentWindow
!_leaderboardViewIframe ||
!_leaderboardViewIframe.contentWindow
) {
logger.warn(
'Unable to transmit the new login status to the leaderboard view.'
);
return;
}

if (status === 'errored') {
_leaderboardViewIframe.contentWindow.postMessage(
{
id: 'onPlayerAuthenticationDismissed',
id: 'onPlayerAuthenticationErrored',
},
leaderboardHostBaseUrl
);
return;
}
},
onErrored: () => {
if (
_leaderboardViewIframe &&
_leaderboardViewIframe.contentWindow
) {

const playerId = gdjs.playerAuthentication.getUserId();
const playerToken = gdjs.playerAuthentication.getUserToken();
if (status === 'dismissed' || !playerId || !playerToken) {
_leaderboardViewIframe.contentWindow.postMessage(
{
id: 'onPlayerAuthenticationErrored',
id: 'onPlayerAuthenticationDismissed',
},
leaderboardHostBaseUrl
);
return;
}
},
onLoggedIn: () => {
if (
_leaderboardViewIframe &&
_leaderboardViewIframe.contentWindow
) {
const playerId = gdjs.playerAuthentication.getUserId();
const playerToken = gdjs.playerAuthentication.getUserToken();
if (!playerId || !playerToken) {
return;
}

if (
_leaderboardViewIframe &&
_leaderboardViewIframe.contentWindow
) {
_leaderboardViewIframe.contentWindow.postMessage(
{
id: 'onPlayerAuthenticated',
playerId,
playerUsername: gdjs.playerAuthentication.getUsername(),
playerToken: playerToken,
},
leaderboardHostBaseUrl
);
}
}
},
});

_leaderboardViewIframe.contentWindow.postMessage(
{
id: 'onPlayerAuthenticated',
playerId,
playerUsername: gdjs.playerAuthentication.getUsername(),
playerToken: playerToken,
},
leaderboardHostBaseUrl
);
});
break;
case 'closeLeaderboardView':
_hasPlayerJustClosedLeaderboardView = true;
Expand Down Expand Up @@ -820,10 +805,6 @@ namespace gdjs {
);
}
}
searchParams.set(
'playerAuthPlatform',
gdjs.playerAuthentication.getPlayerAuthPlatform(runtimeScene)
);
const playerId = gdjs.playerAuthentication.getUserId();
const playerToken = gdjs.playerAuthentication.getUserToken();
if (playerId && playerToken) {
Expand Down Expand Up @@ -877,9 +858,8 @@ namespace gdjs {

resetLeaderboardDisplayErrorTimeout(runtimeScene);

_leaderboardViewIframe = computeLeaderboardDisplayingIframe(
targetUrl
);
_leaderboardViewIframe =
computeLeaderboardDisplayingIframe(targetUrl);
if (typeof window !== 'undefined') {
_leaderboardMessageListener = (event: MessageEvent) => {
receiveMessageFromLeaderboardView(
Expand Down
3 changes: 2 additions & 1 deletion Extensions/PlayerAuthentication/JsExtension.js
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,8 @@ module.exports = {
.addIncludeFile(
'Extensions/PlayerAuthentication/playerauthenticationtools.js'
)
.setFunctionName('gdjs.playerAuthentication.openAuthenticationWindow');
.setFunctionName('gdjs.playerAuthentication.openAuthenticationWindow')
.setAsyncFunctionName('gdjs.playerAuthentication.openAuthenticationWindow');

extension
.addCondition(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@ namespace gdjs {
? "One moment, we're opening a window for you to log in."
: "One moment, we're opening a new page with your web browser for you to log in.",
text2:
'If the window did not open, please check your pop-up blocker and click the button below to try again.',
platform === 'cordova'
? ''
: 'If the window did not open, please check your pop-up blocker and click the button below to try again.',
}
: {
title: 'Publish your game!',
Expand Down
Loading

0 comments on commit 3f713f8

Please sign in to comment.