Patch for web compatibility

This commit is contained in:
zontreck 2025-05-17 02:34:15 -07:00
parent 444d67cb28
commit de6d767a38
6 changed files with 25 additions and 13 deletions

View file

@ -9,7 +9,7 @@ class TTConsts {
static get SESSION_SERVER =>
"https://api.zontreck.com/timetrack/$UPDATE_CHANNEL/timetrack.php";
static const VERSION = "1.0.0-beta.6";
static const VERSION = "1.0.0-beta.7";
static bool UPDATE_AVAILABLE = false;
static UpdateChannel UPDATE_CHANNEL = UpdateChannel.beta;

View file

@ -25,6 +25,9 @@ class SessionData {
static String LastSessionID = "";
static String DisplayError = "";
/// Is true if the try-catch is tripped or if not running on Android
static bool isWeb = false;
/// This flag is usually set when data is loaded from a saved state. Or when accessed using the Web version of the app.
static bool IsReadOnly = false;

View file

@ -1,3 +1,5 @@
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_map_tile_caching/flutter_map_tile_caching.dart';
import 'package:timetrack/consts.dart';
@ -7,7 +9,12 @@ import 'package:timetrack/pages/MainApp.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await TTConsts.checkUpdate();
SessionData.isWeb = true;
try {
SessionData.isWeb = !Platform.isAndroid;
} catch (E) {}
if (!SessionData.isWeb) await TTConsts.checkUpdate();
var sess = Uri.base.queryParameters["code"] ?? "";
SessionData.LastSessionID = sess;
@ -19,9 +26,8 @@ Future<void> main() async {
}
}
await FMTCObjectBoxBackend().initialise();
await FMTCStore('mapStore').manage.create();
if (!SessionData.isWeb) await FMTCObjectBoxBackend().initialise();
if (!SessionData.isWeb) await FMTCStore('mapStore').manage.create();
runApp(MainApp());
}

View file

@ -1,6 +1,5 @@
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:timetrack/data.dart';
import 'package:timetrack/pages/HomePage.dart';
import 'package:timetrack/pages/MapPage.dart';
import 'package:timetrack/pages/UpdateSettings.dart';
@ -27,7 +26,7 @@ class MainAppState extends State<MainApp> {
return MaterialApp(
title: "Time Tracker",
routes: {
"/": (ctx) => Platform.isAndroid ? HomePage() : WebMain(),
"/": (ctx) => !SessionData.isWeb ? HomePage() : WebMain(),
"/upd": (ctx) => UpdateSettingsPage(),
"/map": (ctx) => MapPage(),
"/work": (ctx) => WorkDataPage(),

View file

@ -21,9 +21,7 @@ class _MapPage extends State<MapPage> {
List<Marker> Markers = [];
bool autorefresh = true;
final _tileProvider = FMTCTileProvider(
stores: const {'mapStore': BrowseStoreStrategy.readUpdateCreate},
);
late FMTCTileProvider _tileProvider;
@override
void initState() {
@ -40,6 +38,11 @@ class _MapPage extends State<MapPage> {
@override
void didChangeDependencies() {
if (!SessionData.isWeb) {
_tileProvider = FMTCTileProvider(
stores: const {'mapStore': BrowseStoreStrategy.readUpdateCreate},
);
}
PointMap = [];
Markers = [];
@ -141,7 +144,8 @@ class _MapPage extends State<MapPage> {
TileLayer(
urlTemplate: "https://tile.openstreetmap.org/{z}/{x}/{y}.png",
userAgentPackageName: "dev.zontreck.timetrack",
tileProvider: _tileProvider,
tileProvider: SessionData.isWeb ? null : _tileProvider,
),
PolylineLayer(
polylines: [

View file

@ -16,7 +16,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
# In Windows, build-name is used as the major, minor, and patch parts
# of the product and file versions while build-number is used as the build suffix.
version: 1.0.0-beta.6
version: 1.0.0-beta.7
environment:
sdk: ^3.7.2