package funkin.ui; #if newgrounds import funkin.NGio; import funkin.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:ConnectionResult) { switch (result) { case Success: { prompt.setText("Login Successful"); prompt.setButtons(Ok); prompt.onYes = prompt.close; } case Fail(msg): { trace("Login Error:" + msg); prompt.setText("Login failed"); prompt.setButtons(Ok); prompt.onYes = prompt.close; } case Cancelled: { if (prompt != null) { prompt.setText("Login cancelled by user"); 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; } } #end