Permalink
Cannot retrieve contributors at this time
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
128 lines (104 sloc)
3.52 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Dart imports: | |
import 'dart:convert'; | |
import 'dart:html'; | |
import 'dart:typed_data'; | |
import 'dart:ui' as ui; | |
// Package imports: | |
import 'package:invoiceninja_flutter/.env.dart'; | |
import 'package:redux/redux.dart'; | |
import 'package:msal_js/msal_js.dart'; | |
// Project imports: | |
import 'package:invoiceninja_flutter/redux/app/app_state.dart'; | |
import 'package:invoiceninja_flutter/utils/formatting.dart'; | |
class WebUtils { | |
static String get apiUrl { | |
var url = window.location.href; | |
if (url.contains('?')) { | |
url = url.split('?')[0]; | |
} | |
if (url.contains('#')) { | |
url = url.split('#')[0]; | |
} | |
return formatApiUrl(url); | |
} | |
static String get browserUrl => cleanApiUrl(apiUrl); | |
static String get browserRoute => window.location.hash.replaceFirst('#', ''); | |
static String getHtmlValue(String field) => | |
window.document.documentElement.dataset[field]; | |
static void downloadTextFile(String filename, String data) { | |
final encodedFileContents = Uri.encodeComponent(data); | |
AnchorElement(href: 'data:text/plain;charset=utf-8,$encodedFileContents') | |
..setAttribute('download', filename) | |
..click(); | |
} | |
static void downloadBinaryFile(String filename, Uint8List data) { | |
final encodedFileContents = base64Encode(data); | |
AnchorElement( | |
href: | |
'data:application/octet-stream;charset=utf-16le;base64,$encodedFileContents') | |
..setAttribute('download', filename) | |
..click(); | |
} | |
static void reloadBrowser() => window.location.reload(); | |
static void registerWebView(String html) { | |
// ignore: undefined_prefixed_name | |
ui.platformViewRegistry.registerViewFactory( | |
html, | |
(int viewId) => IFrameElement() | |
..src = html | |
..style.border = 'none'); | |
} | |
static void warnChanges(Store<AppState> store) { | |
window.onBeforeUnload.listen((Event e) { | |
if (store.state.hasChanges()) { | |
(e as BeforeUnloadEvent).returnValue = | |
'Changes you made may not be saved.'; | |
} | |
}); | |
} | |
static void microsoftLogout() { | |
final config = Configuration() | |
..auth = (BrowserAuthOptions() | |
..redirectUri = cleanApiUrl(apiUrl) | |
..clientId = Config.MICROSOFT_CLIENT_ID); | |
final publicClientApp = PublicClientApplication(config); | |
final logoutRequest = EndSessionPopupRequest(); | |
publicClientApp.logoutPopup(logoutRequest); | |
} | |
static void microsoftLogin( | |
Function(String, String) succesCallback, | |
Function(dynamic) failureCallback, | |
) async { | |
final config = Configuration() | |
..auth = (BrowserAuthOptions() | |
..redirectUri = cleanApiUrl(apiUrl) | |
..clientId = Config.MICROSOFT_CLIENT_ID); | |
final publicClientApp = PublicClientApplication(config); | |
final loginRequest = PopupRequest()..scopes = ['user.read']; | |
publicClientApp.loginPopup(loginRequest).then((result) { | |
succesCallback(result?.idToken, result?.accessToken); | |
}).catchError((dynamic error) { | |
failureCallback(error); | |
}); | |
} | |
/* | |
String loadToken() { | |
final cookies = document.cookie; | |
final List<String> listValues = | |
cookies.isNotEmpty ? cookies.split(';') : []; | |
for (int i = 0; i < listValues.length; i++) { | |
final cookie = listValues[i]; | |
final index = cookie.indexOf('='); | |
final key = cookie.substring(0, index).trim(); | |
final value = cookie.substring(index + 1).trim(); | |
if (key == 'token') { | |
return value; | |
} | |
} | |
return null; | |
} | |
static void saveToken(String token) { | |
document.cookie = 'token=$token; max-age=2592000; path=/;'; | |
} | |
*/ | |
} |