outsourced lots of api calls to api folder
centered error message when failed loading video feed display server url on settings page
This commit is contained in:
@ -1,11 +1,9 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:openmediacentermobile/preview/tag_tile.dart';
|
||||
import '../api/tag_api.dart';
|
||||
import '../preview/tag_tile.dart';
|
||||
import '../drawer/my_drawer.dart';
|
||||
import '../screen_loading.dart';
|
||||
|
||||
import '../api/api.dart';
|
||||
import '../types/tag.dart';
|
||||
|
||||
class CategorieScreen extends StatefulWidget {
|
||||
@ -18,18 +16,10 @@ class CategorieScreen extends StatefulWidget {
|
||||
class _CategorieScreenState extends State<CategorieScreen> {
|
||||
late Future<List<Tag>> _categories;
|
||||
|
||||
Future<List<Tag>> loadVideoData() async {
|
||||
final data = await API.query("tags", "getAllTags", {});
|
||||
|
||||
final d = (jsonDecode(data) ?? []) as List<dynamic>;
|
||||
final tags = d.map((e) => Tag.fromJson(e)).toList(growable: false);
|
||||
return tags;
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_categories = loadVideoData();
|
||||
_categories = loadAllTags();
|
||||
}
|
||||
|
||||
@override
|
||||
|
@ -1,5 +1,5 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:openmediacentermobile/utils/file_formatter.dart';
|
||||
import '../utils/file_formatter.dart';
|
||||
|
||||
import '../api/token.dart';
|
||||
import '../db/database.dart';
|
||||
@ -15,6 +15,7 @@ class SettingsScreen extends StatefulWidget {
|
||||
|
||||
class _SettingsScreenState extends State<SettingsScreen> {
|
||||
int dbsize = 0;
|
||||
String serverUrl = "";
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
@ -22,6 +23,10 @@ class _SettingsScreenState extends State<SettingsScreen> {
|
||||
Db().getDbSize().then((v) => setState(() {
|
||||
dbsize = v;
|
||||
}));
|
||||
|
||||
Token.getInstance().getToken().then((value) => setState(() {
|
||||
serverUrl = value?.domain ?? "unknown";
|
||||
}));
|
||||
}
|
||||
|
||||
@override
|
||||
@ -34,6 +39,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
|
||||
),
|
||||
body: Column(
|
||||
children: [
|
||||
Text("Current server: $serverUrl"),
|
||||
ElevatedButton(
|
||||
onPressed: () async {
|
||||
await Db().clear();
|
||||
|
@ -1,12 +1,9 @@
|
||||
import 'dart:convert';
|
||||
import 'dart:math';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import '../api/video_api.dart';
|
||||
import '../drawer/my_drawer.dart';
|
||||
import '../preview/preview_grid.dart';
|
||||
import '../api/api.dart';
|
||||
import '../utils/platform.dart';
|
||||
import '../types/video.dart';
|
||||
|
||||
class ShuffleScreen extends StatefulWidget {
|
||||
const ShuffleScreen({Key? key}) : super(key: key);
|
||||
@ -16,18 +13,6 @@ class ShuffleScreen extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _ShuffleScreenState extends State<ShuffleScreen> {
|
||||
Future<List<VideoT>> loadData(int nr) async {
|
||||
final data = await API.query("video", "getRandomMovies",
|
||||
{'Number': nr, 'Seed': Random().nextInt(0x7fffffff)});
|
||||
|
||||
final d = jsonDecode(data);
|
||||
|
||||
List<VideoT> dta =
|
||||
(d['Videos'] as List).map((e) => VideoT.fromJson(e)).toList();
|
||||
|
||||
return dta;
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
double width = MediaQuery.of(context).size.width;
|
||||
@ -38,7 +23,8 @@ class _ShuffleScreenState extends State<ShuffleScreen> {
|
||||
),
|
||||
body: PreviewGrid(
|
||||
videoLoader: () {
|
||||
return loadData((isTV() ? width ~/ 200 : width ~/ 275) * 2);
|
||||
return loadShuffledVideos(
|
||||
(isTV() ? width ~/ 200 : width ~/ 275) * 2);
|
||||
},
|
||||
footerBuilder: (state) => Column(
|
||||
children: [
|
||||
|
@ -1,12 +1,9 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import '../api/video_api.dart';
|
||||
|
||||
import '../api/api.dart';
|
||||
import '../drawer/my_drawer.dart';
|
||||
import '../preview/preview_grid.dart';
|
||||
import '../types/tag.dart';
|
||||
import '../types/video.dart';
|
||||
|
||||
enum FilterTypes { DATE, LIKES, RANDOM, NAMES, LENGTH }
|
||||
|
||||
@ -24,18 +21,6 @@ class VideoFeedState extends State<VideoFeed> {
|
||||
FilterTypes filterSelection = FilterTypes.DATE;
|
||||
Key _refreshKey = UniqueKey();
|
||||
|
||||
Future<List<VideoT>> loadData() async {
|
||||
final data = await API.query("video", "getMovies",
|
||||
{'Tag': widget.tag?.tagId ?? 1, 'Sort': filterSelection.index});
|
||||
|
||||
final d = jsonDecode(data);
|
||||
|
||||
List<VideoT> dta =
|
||||
(d['Videos'] as List).map((e) => VideoT.fromJson(e)).toList();
|
||||
|
||||
return dta;
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
@ -80,7 +65,7 @@ class VideoFeedState extends State<VideoFeed> {
|
||||
),
|
||||
body: PreviewGrid(
|
||||
key: _refreshKey,
|
||||
videoLoader: () => loadData(),
|
||||
videoLoader: () => loadVideo(widget.tag, filterSelection.index),
|
||||
),
|
||||
drawer: widget.tag == null ? MyDrawer() : null);
|
||||
}
|
||||
|
Reference in New Issue
Block a user