Funkin/source/ui/NgPrompt.hx

119 lines
2.5 KiB
Haxe

package ui;
import io.newgrounds.NGLite;
import NGio;
import ui.Prompt;
class NgPrompt extends Prompt
{
public function new (text:String, style:ButtonStyle = Yes_No)
{
super(text, style);
}
static public function showLogin()
{
return showLoginPrompt(true);
}
static public function showSavedSessionFailed()
{
return showLoginPrompt(false);
}
static function showLoginPrompt(fromUi:Bool)
{
var prompt = new NgPrompt("Talking to server...", None);
prompt.openCallback = NGio.login.bind
(
function popupLauncher(openPassportUrl)
{
var choiceMsg = fromUi
? #if web "Log in to Newgrounds?" #else null #end // User-input needed to allow popups
: "Your session has expired.\n Please login again.";
if (choiceMsg != null)
{
prompt.setText(choiceMsg);
prompt.setButtons(Yes_No);
#if web
prompt.buttons.getItem("yes").fireInstantly = true;
#end
prompt.onYes = function()
{
prompt.setText("Connecting..." #if web + "\n(check your popup blocker)" #end);
prompt.setButtons(None);
openPassportUrl();
};
prompt.onNo = function()
{
prompt.close();
prompt = null;
NGio.cancelLogin();
};
}
else
{
prompt.setText("Connecting...");
openPassportUrl();
}
},
function onLoginComplete(result:LoginOutcome)
{
switch (result)
{
case SUCCESS:
{
prompt.setText("Login Successful");
prompt.setButtons(Ok);
prompt.onYes = prompt.close;
}
case FAIL(ERROR(error)):
{
trace("Login Error:" + error.toString());
prompt.setText("Login failed");
prompt.setButtons(Ok);
prompt.onYes = prompt.close;
}
case FAIL(CANCELLED(PASSPORT)):
{
if (prompt != null)
{
prompt.setText("Login cancelled by user");
prompt.setButtons(Ok);
prompt.onYes = prompt.close;
}
else
trace("Login cancelled via prompt");
}
case FAIL(CANCELLED(MANUAL)):
{
if (prompt != null)
{
prompt.setText("Login cancelled");
prompt.setButtons(Ok);
prompt.onYes = prompt.close;
}
else
trace("Login cancelled via prompt");
}
}
}
);
return prompt;
}
static public function showLogout()
{
var user = io.newgrounds.NG.core.user.name;
var prompt = new NgPrompt('Log out of $user?', Yes_No);
prompt.onYes = function()
{
NGio.logout();
prompt.close();
};
prompt.onNo = prompt.close;
return prompt;
}
}