Partial web app support
This commit is contained in:
@@ -14,7 +14,7 @@ import 'package:thingsboard_client/thingsboard_client.dart';
|
||||
|
||||
import 'login_page_background.dart';
|
||||
|
||||
class LoginPage extends TbPageWidget<LoginPage, _LoginPageState> {
|
||||
class LoginPage extends TbPageWidget {
|
||||
|
||||
LoginPage(TbContext tbContext) : super(tbContext);
|
||||
|
||||
@@ -23,7 +23,7 @@ class LoginPage extends TbPageWidget<LoginPage, _LoginPageState> {
|
||||
|
||||
}
|
||||
|
||||
class _LoginPageState extends TbPageState<LoginPage, _LoginPageState> {
|
||||
class _LoginPageState extends TbPageState<LoginPage> {
|
||||
|
||||
final ButtonStyle _oauth2ButtonWithTextStyle =
|
||||
OutlinedButton.styleFrom(padding: EdgeInsets.all(16),
|
||||
|
||||
@@ -7,7 +7,7 @@ import 'package:thingsboard_app/core/context/tb_context_widget.dart';
|
||||
import 'package:thingsboard_app/widgets/tb_app_bar.dart';
|
||||
import 'package:thingsboard_app/widgets/tb_progress_indicator.dart';
|
||||
|
||||
class ResetPasswordRequestPage extends TbPageWidget<ResetPasswordRequestPage, _ResetPasswordRequestPageState> {
|
||||
class ResetPasswordRequestPage extends TbPageWidget {
|
||||
|
||||
ResetPasswordRequestPage(TbContext tbContext) : super(tbContext);
|
||||
|
||||
@@ -16,7 +16,7 @@ class ResetPasswordRequestPage extends TbPageWidget<ResetPasswordRequestPage, _R
|
||||
|
||||
}
|
||||
|
||||
class _ResetPasswordRequestPageState extends TbPageState<ResetPasswordRequestPage, _ResetPasswordRequestPageState> {
|
||||
class _ResetPasswordRequestPageState extends TbPageState<ResetPasswordRequestPage> {
|
||||
|
||||
final _isLoadingNotifier = ValueNotifier<bool>(false);
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import 'dart:async';
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:universal_platform/universal_platform.dart';
|
||||
import 'package:device_info/device_info.dart';
|
||||
import 'package:fluro/fluro.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
@@ -13,7 +12,7 @@ import 'package:thingsboard_app/core/auth/oauth2/tb_oauth2_client.dart';
|
||||
import 'package:thingsboard_app/modules/main/main_page.dart';
|
||||
import 'package:thingsboard_app/utils/services/widget_action_handler.dart';
|
||||
import 'package:thingsboard_client/thingsboard_client.dart';
|
||||
import 'package:thingsboard_app/utils/services/tb_secure_storage.dart';
|
||||
import 'package:thingsboard_app/utils/services/tb_app_storage.dart';
|
||||
import 'package:thingsboard_app/core/context/tb_context_widget.dart';
|
||||
|
||||
enum NotificationType {
|
||||
@@ -145,8 +144,9 @@ class TbContext {
|
||||
return true;
|
||||
}());
|
||||
_initialized = true;
|
||||
var storage = createAppStorage();
|
||||
tbClient = ThingsboardClient(ThingsboardAppConstants.thingsBoardApiEndpoint,
|
||||
storage: TbSecureStorage(),
|
||||
storage: storage,
|
||||
onUserLoaded: onUserLoaded,
|
||||
onError: onError,
|
||||
onLoadStarted: onLoadStarted,
|
||||
@@ -156,15 +156,21 @@ class TbContext {
|
||||
oauth2Client = TbOAuth2Client(tbContext: this, appSecretProvider: AppSecretProvider.local());
|
||||
|
||||
try {
|
||||
if (Platform.isAndroid) {
|
||||
if (UniversalPlatform.isAndroid) {
|
||||
_androidInfo = await deviceInfoPlugin.androidInfo;
|
||||
_oauth2PlatformType = PlatformType.ANDROID;
|
||||
} else if (Platform.isIOS) {
|
||||
} else if (UniversalPlatform.isIOS) {
|
||||
_iosInfo = await deviceInfoPlugin.iosInfo;
|
||||
_oauth2PlatformType = PlatformType.IOS;
|
||||
} else {
|
||||
_oauth2PlatformType = PlatformType.WEB;
|
||||
}
|
||||
if (UniversalPlatform.isAndroid || UniversalPlatform.isIOS) {
|
||||
PackageInfo packageInfo = await PackageInfo.fromPlatform();
|
||||
packageName = packageInfo.packageName;
|
||||
} else {
|
||||
packageName = 'web.app';
|
||||
}
|
||||
PackageInfo packageInfo = await PackageInfo.fromPlatform();
|
||||
packageName = packageInfo.packageName;
|
||||
await tbClient.init();
|
||||
} catch (e, s) {
|
||||
log.error('Failed to init tbContext: $e', e, s);
|
||||
@@ -337,9 +343,9 @@ class TbContext {
|
||||
}
|
||||
|
||||
bool isPhysicalDevice() {
|
||||
if (Platform.isAndroid) {
|
||||
if (UniversalPlatform.isAndroid) {
|
||||
return _androidInfo!.isPhysicalDevice;
|
||||
} else if (Platform.isIOS) {
|
||||
} else if (UniversalPlatform.isIOS) {
|
||||
return _iosInfo!.isPhysicalDevice;
|
||||
} else {
|
||||
return false;
|
||||
@@ -348,9 +354,9 @@ class TbContext {
|
||||
|
||||
String userAgent() {
|
||||
String userAgent = 'Mozilla/5.0';
|
||||
if (Platform.isAndroid) {
|
||||
if (UniversalPlatform.isAndroid) {
|
||||
userAgent += ' (Linux; Android ${_androidInfo!.version.release}; ${_androidInfo!.model})';
|
||||
} else if (Platform.isIOS) {
|
||||
} else if (UniversalPlatform.isIOS) {
|
||||
userAgent += ' (${_iosInfo!.model})';
|
||||
}
|
||||
userAgent += ' AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.106 Mobile Safari/537.36';
|
||||
|
||||
@@ -12,13 +12,13 @@ abstract class TbContextStatelessWidget extends StatelessWidget with HasTbContex
|
||||
}
|
||||
}
|
||||
|
||||
abstract class TbContextWidget<W extends TbContextWidget<W,S>, S extends TbContextState<W,S>> extends StatefulWidget with HasTbContext {
|
||||
abstract class TbContextWidget extends StatefulWidget with HasTbContext {
|
||||
TbContextWidget(TbContext tbContext, {Key? key}) : super(key: key) {
|
||||
setTbContext(tbContext);
|
||||
}
|
||||
}
|
||||
|
||||
abstract class TbContextState<W extends TbContextWidget<W,S>, S extends TbContextState<W,S>> extends State<W> with HasTbContext {
|
||||
abstract class TbContextState<T extends TbContextWidget> extends State<T> with HasTbContext {
|
||||
|
||||
final bool handleLoading;
|
||||
|
||||
@@ -47,11 +47,11 @@ mixin TbMainState {
|
||||
|
||||
}
|
||||
|
||||
abstract class TbPageWidget<W extends TbPageWidget<W,S>, S extends TbPageState<W,S>> extends TbContextWidget<W,S> {
|
||||
abstract class TbPageWidget extends TbContextWidget {
|
||||
TbPageWidget(TbContext tbContext, {Key? key}) : super(tbContext, key: key);
|
||||
}
|
||||
|
||||
abstract class TbPageState<W extends TbPageWidget<W,S>, S extends TbPageState<W,S>> extends TbContextState<W,S> with RouteAware {
|
||||
abstract class TbPageState<W extends TbPageWidget> extends TbContextState<W> with RouteAware {
|
||||
TbPageState({bool handleUserLoaded = false}): super(handleLoading: true);
|
||||
|
||||
@override
|
||||
@@ -79,7 +79,7 @@ abstract class TbPageState<W extends TbPageWidget<W,S>, S extends TbPageState<W,
|
||||
|
||||
}
|
||||
|
||||
class TextContextWidget extends TbContextWidget<TextContextWidget, _TextContextWidgetState> {
|
||||
class TextContextWidget extends TbContextWidget {
|
||||
|
||||
final String text;
|
||||
|
||||
@@ -90,7 +90,7 @@ class TextContextWidget extends TbContextWidget<TextContextWidget, _TextContextW
|
||||
|
||||
}
|
||||
|
||||
class _TextContextWidgetState extends TbContextState<TextContextWidget, _TextContextWidgetState> {
|
||||
class _TextContextWidgetState extends TbContextState<TextContextWidget> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
||||
@@ -193,7 +193,7 @@ class TimePageLinkController extends PageKeyController<TimePageLink> {
|
||||
|
||||
}
|
||||
|
||||
abstract class BaseEntitiesWidget<T, P> extends TbContextWidget<BaseEntitiesWidget<T, P>, BaseEntitiesState<T, P>> with EntitiesBase<T, P> {
|
||||
abstract class BaseEntitiesWidget<T, P> extends TbContextWidget with EntitiesBase<T, P> {
|
||||
|
||||
final bool searchMode;
|
||||
final PageKeyController<P> pageKeyController;
|
||||
@@ -211,7 +211,7 @@ abstract class BaseEntitiesWidget<T, P> extends TbContextWidget<BaseEntitiesWidg
|
||||
|
||||
}
|
||||
|
||||
abstract class BaseEntitiesState<T, P> extends TbContextState<BaseEntitiesWidget<T, P>, BaseEntitiesState<T, P>> {
|
||||
abstract class BaseEntitiesState<T, P> extends TbContextState<BaseEntitiesWidget<T, P>> {
|
||||
|
||||
late final PagingController<P, T> pagingController;
|
||||
Completer<void>? _refreshCompleter;
|
||||
|
||||
@@ -41,7 +41,7 @@ abstract class EntitiesListPageLinkWidget<T> extends EntitiesListWidget<T, PageL
|
||||
|
||||
}
|
||||
|
||||
abstract class EntitiesListWidget<T, P> extends TbContextWidget<EntitiesListWidget<T,P>, _EntitiesListWidgetState<T,P>> with EntitiesBase<T,P> {
|
||||
abstract class EntitiesListWidget<T, P> extends TbContextWidget with EntitiesBase<T,P> {
|
||||
|
||||
final EntitiesListWidgetController? _controller;
|
||||
|
||||
@@ -58,7 +58,7 @@ abstract class EntitiesListWidget<T, P> extends TbContextWidget<EntitiesListWidg
|
||||
|
||||
}
|
||||
|
||||
class _EntitiesListWidgetState<T,P> extends TbContextState<EntitiesListWidget<T,P>, _EntitiesListWidgetState<T,P>> {
|
||||
class _EntitiesListWidgetState<T,P> extends TbContextState<EntitiesListWidget<T,P>> {
|
||||
|
||||
final EntitiesListWidgetController? _controller;
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ import 'package:thingsboard_app/widgets/tb_app_bar.dart';
|
||||
import 'package:thingsboard_app/widgets/tb_progress_indicator.dart';
|
||||
import 'package:thingsboard_client/thingsboard_client.dart';
|
||||
|
||||
abstract class EntityDetailsPage<T extends BaseData> extends TbPageWidget<EntityDetailsPage<T>, _EntityDetailsPageState<T>> {
|
||||
abstract class EntityDetailsPage<T extends BaseData> extends TbPageWidget {
|
||||
|
||||
final labelTextStyle = TextStyle(
|
||||
color: Color(0xFF757575),
|
||||
@@ -56,7 +56,7 @@ abstract class EntityDetailsPage<T extends BaseData> extends TbPageWidget<Entity
|
||||
|
||||
}
|
||||
|
||||
class _EntityDetailsPageState<T extends BaseData> extends TbPageState<EntityDetailsPage<T>, _EntityDetailsPageState<T>> {
|
||||
class _EntityDetailsPageState<T extends BaseData> extends TbPageState<EntityDetailsPage<T>> {
|
||||
|
||||
late Future<T?> entityFuture;
|
||||
late ValueNotifier<String> titleValue;
|
||||
|
||||
@@ -4,7 +4,7 @@ import 'package:thingsboard_app/core/context/tb_context.dart';
|
||||
import 'package:thingsboard_app/core/context/tb_context_widget.dart';
|
||||
import 'package:thingsboard_app/widgets/tb_progress_indicator.dart';
|
||||
|
||||
class ThingsboardInitApp extends TbPageWidget<ThingsboardInitApp, _ThingsboardInitAppState> {
|
||||
class ThingsboardInitApp extends TbPageWidget {
|
||||
|
||||
ThingsboardInitApp(TbContext tbContext, {Key? key}) : super(tbContext, key: key);
|
||||
|
||||
@@ -13,7 +13,7 @@ class ThingsboardInitApp extends TbPageWidget<ThingsboardInitApp, _ThingsboardIn
|
||||
|
||||
}
|
||||
|
||||
class _ThingsboardInitAppState extends TbPageState<ThingsboardInitApp, _ThingsboardInitAppState> {
|
||||
class _ThingsboardInitAppState extends TbPageState<ThingsboardInitApp> {
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
|
||||
Reference in New Issue
Block a user