Clean up code
This commit is contained in:
18
lib/api.dart
18
lib/api.dart
@@ -14,7 +14,6 @@ class ApiClient {
|
||||
|
||||
ApiClient({required this.baseUrl, this.token});
|
||||
|
||||
/// Login and store the JWT token
|
||||
Future<bool> login(String username, String password) async {
|
||||
log.info("Logging in...");
|
||||
try {
|
||||
@@ -41,13 +40,11 @@ class ApiClient {
|
||||
return false;
|
||||
}
|
||||
|
||||
/// Logout and clear the token
|
||||
void logout() {
|
||||
token = null;
|
||||
log.info('Logged out successfully.');
|
||||
}
|
||||
|
||||
/// Make a GET request
|
||||
Future<http.Response?> get(String endpoint, {bool isBinary = false}) async {
|
||||
try {
|
||||
final url = '$baseUrl$endpoint';
|
||||
@@ -70,7 +67,6 @@ class ApiClient {
|
||||
return null;
|
||||
}
|
||||
|
||||
/// Make a POST request
|
||||
Future<http.Response?> post(
|
||||
String endpoint, Map<String, dynamic> body) async {
|
||||
try {
|
||||
@@ -98,7 +94,6 @@ class ApiClient {
|
||||
return null;
|
||||
}
|
||||
|
||||
/// Make a POST request with form data
|
||||
Future<http.Response?> postFormData(String endpoint, String body) async {
|
||||
try {
|
||||
final url = '$baseUrl$endpoint';
|
||||
@@ -152,29 +147,18 @@ class ApiClient {
|
||||
|
||||
Future<File?> getPdfFileCached(String sheetUuid) async {
|
||||
try {
|
||||
// Get the cache directory
|
||||
|
||||
// final cacheDir = kIsWeb
|
||||
// ? await MemoryFileSystem().systemTempDirectory.createTemp('cache')
|
||||
// : await getTemporaryDirectory();
|
||||
final cacheDir = await getTemporaryDirectory();
|
||||
final cachedPdfPath = '${cacheDir.path}/$sheetUuid.pdf';
|
||||
|
||||
// Check if the file already exists in the cache
|
||||
final cachedFile = File(cachedPdfPath);
|
||||
|
||||
if (await cachedFile.exists()) {
|
||||
log.info("PDF found in cache: $cachedPdfPath");
|
||||
return cachedFile;
|
||||
}
|
||||
|
||||
// Make the authenticated API call
|
||||
|
||||
final response = await this.get('/sheet/pdf/$sheetUuid', isBinary: true);
|
||||
final response = await get('/sheet/pdf/$sheetUuid', isBinary: true);
|
||||
|
||||
if (response != null && response.statusCode == 200) {
|
||||
// Save the fetched file to the cache
|
||||
//
|
||||
await cachedFile.writeAsBytes(response.bodyBytes);
|
||||
log.info("PDF downloaded and cached at: $cachedPdfPath");
|
||||
return cachedFile;
|
||||
|
||||
@@ -24,16 +24,6 @@ class _MyHomePageState extends State<MyHomePage> {
|
||||
super.initState();
|
||||
}
|
||||
|
||||
// Future<String?> getSafPickedSheetsDirectory() async {
|
||||
// await Permission.storage.request();
|
||||
// await Permission.manageExternalStorage.request();
|
||||
// var pickedDirectories = await Saf.getPersistedPermissionDirectories();
|
||||
// if (pickedDirectories == null || pickedDirectories.isEmpty) {
|
||||
// return null;
|
||||
// }
|
||||
// return pickedDirectories.last;
|
||||
// }
|
||||
|
||||
Future<List<Sheet>> acquireSheets() async {
|
||||
final url = await _storageHelper.read(StorageKey.url);
|
||||
final jwt = await _storageHelper.read(StorageKey.jwt);
|
||||
@@ -42,27 +32,6 @@ class _MyHomePageState extends State<MyHomePage> {
|
||||
final sheets = await apiClient!.fetchSheets();
|
||||
log.info("${sheets.length} sheets fetched");
|
||||
return sheets;
|
||||
// return api.main();
|
||||
|
||||
// final directory = await getApplicationDocumentsDirectory();
|
||||
// print("Directory is: $directory");
|
||||
// String? sheetsDirectory = "/home/julian/Klavier";
|
||||
// if (sheetsDirectory == null || sheetsDirectory.isEmpty) {
|
||||
// await Saf.getDynamicDirectoryPermission(grantWritePermission: false);
|
||||
// sheetsDirectory = "/home/julian/Klavier";
|
||||
// if (sheetsDirectory == null || sheetsDirectory.isEmpty) {
|
||||
// throw Exception("No Directory selected");
|
||||
// }
|
||||
// }
|
||||
// return List.empty();
|
||||
|
||||
// var sheetsDirectoryFiles = await Saf.getFilesPathFor(sheetsDirectory);
|
||||
// if (sheetsDirectoryFiles == null) {
|
||||
// await Saf.releasePersistedPermissions();
|
||||
// throw Exception(
|
||||
// "Permissions for directory no longer valid or Directory deleted. Please restart app.");
|
||||
// }
|
||||
// return loadSheetsSorted(sheetsDirectoryFiles);
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
import 'dart:convert';
|
||||
import 'dart:developer';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
import 'package:jwt_decoder/jwt_decoder.dart';
|
||||
import 'package:sheetless/api.dart';
|
||||
import 'package:sheetless/home_page.dart';
|
||||
@@ -12,7 +8,7 @@ class LoginPage extends StatefulWidget {
|
||||
const LoginPage({super.key});
|
||||
|
||||
@override
|
||||
_LoginPageState createState() => _LoginPageState();
|
||||
State<LoginPage> createState() => _LoginPageState();
|
||||
}
|
||||
|
||||
class _LoginPageState extends State<LoginPage> {
|
||||
|
||||
@@ -31,7 +31,7 @@ class SheetsWidget extends StatefulWidget {
|
||||
const SheetsWidget({super.key, required this.sheets, required this.callback});
|
||||
|
||||
@override
|
||||
_SheetsWidgetState createState() => _SheetsWidgetState();
|
||||
State<SheetsWidget> createState() => _SheetsWidgetState();
|
||||
}
|
||||
|
||||
class _SheetsWidgetState extends State<SheetsWidget> {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:pdfrx/pdfrx.dart';
|
||||
import 'package:sheetless/api.dart';
|
||||
import 'package:sheetless/sheet.dart';
|
||||
@@ -16,6 +17,7 @@ class SheetViewerPage extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _SheetViewerPageState extends State<SheetViewerPage> {
|
||||
final log = Logger("SheetViewerPage");
|
||||
int page = 1;
|
||||
int numPages = 1;
|
||||
bool isFullscreen = false;
|
||||
@@ -39,13 +41,13 @@ class _SheetViewerPageState extends State<SheetViewerPage> {
|
||||
void toggleFullscreen() {
|
||||
isFullscreen = !isFullscreen;
|
||||
if (isFullscreen) {
|
||||
print("enter fullscreen");
|
||||
log.info("enter fullscreen");
|
||||
// enter fullscreen
|
||||
SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky,
|
||||
overlays: []);
|
||||
} else {
|
||||
// exit fullscreen
|
||||
print("exit fullscreen");
|
||||
log.info("exit fullscreen");
|
||||
SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge,
|
||||
overlays: SystemUiOverlay.values);
|
||||
}
|
||||
@@ -70,16 +72,16 @@ class _SheetViewerPageState extends State<SheetViewerPage> {
|
||||
// Get the size of the screen
|
||||
final screenWidth = MediaQuery.of(context).size.width;
|
||||
|
||||
print("Touch at y = ${details.localPosition.dy}");
|
||||
print("Touch at x = ${details.localPosition.dx}");
|
||||
print("Screenwidth = ${screenWidth}");
|
||||
// print("Touch at y = ${details.localPosition.dy}");
|
||||
// print("Touch at x = ${details.localPosition.dx}");
|
||||
// print("Screenwidth = ${screenWidth}");
|
||||
// Check where the user tapped
|
||||
if (details.localPosition.dy < 100) {
|
||||
// TODO
|
||||
// setState(() {
|
||||
// toggleFullscreen();
|
||||
// });
|
||||
} else if (details.localPosition.dx < screenWidth / 2) {
|
||||
// if (details.localPosition.dy < 100) {
|
||||
// TODO
|
||||
// setState(() {
|
||||
// toggleFullscreen();
|
||||
// });
|
||||
if (details.localPosition.dx < screenWidth / 2) {
|
||||
// Left half of the screen
|
||||
setState(() {
|
||||
page = page > 1 ? page - 1 : 1;
|
||||
@@ -100,9 +102,9 @@ class _SheetViewerPageState extends State<SheetViewerPage> {
|
||||
alignment: Alignment.center,
|
||||
),
|
||||
Container(
|
||||
child: Text('$page / $numPages'),
|
||||
alignment: Alignment.bottomCenter,
|
||||
padding: EdgeInsets.only(bottom: 5),
|
||||
child: Text('$page / $numPages'),
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user