Funkin/source/funkin/ui/NgPrompt.hx

105 lines
2.2 KiB
Haxe
Raw Normal View History

package funkin.ui;
2021-02-19 23:10:16 -05:00
#if newgrounds
import funkin.NGio;
import funkin.ui.Prompt;
2021-02-19 23:10:16 -05:00
class NgPrompt extends Prompt
{
public function new(text:String, style:ButtonStyle = Yes_No)
2021-02-19 23:10:16 -05:00
{
super(text, style);
2021-02-19 23:10:16 -05:00
}
2021-02-19 23:10:16 -05:00
static public function showLogin()
{
return showLoginPrompt(true);
}
2021-02-19 23:10:16 -05:00
static public function showSavedSessionFailed()
{
return showLoginPrompt(false);
}
2021-02-19 23:10:16 -05:00
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)
2021-02-19 23:10:16 -05:00
{
prompt.setText(choiceMsg);
prompt.setButtons(Yes_No);
#if web
prompt.buttons.getItem("yes").fireInstantly = true;
#end
prompt.onYes = function()
2021-02-19 23:10:16 -05:00
{
prompt.setText("Connecting..." #if web + "\n(check your popup blocker)" #end);
prompt.setButtons(None);
2021-02-19 23:10:16 -05:00
openPassportUrl();
};
prompt.onNo = function()
2021-02-19 23:10:16 -05:00
{
prompt.close();
prompt = null;
NGio.cancelLogin();
};
}
else
{
prompt.setText("Connecting...");
openPassportUrl();
}
}, function onLoginComplete(result:ConnectionResult)
{
switch (result)
{
case Success:
2021-02-19 23:10:16 -05:00
{
prompt.setText("Login Successful");
prompt.setButtons(Ok);
prompt.onYes = prompt.close;
}
case Fail(msg):
2021-02-19 23:10:16 -05:00
{
trace("Login Error:" + msg);
prompt.setText("Login failed");
prompt.setButtons(Ok);
prompt.onYes = prompt.close;
}
case Cancelled:
2021-02-19 23:10:16 -05:00
{
if (prompt != null)
{
prompt.setText("Login cancelled by user");
prompt.setButtons(Ok);
prompt.onYes = prompt.close;
}
else
trace("Login cancelled via prompt");
}
}
});
2021-02-19 23:10:16 -05:00
return prompt;
}
2021-02-19 23:10:16 -05:00
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;
}
}
#end