From 1eaa9ae125cd9cbf7a965dd4618ddda906fda432 Mon Sep 17 00:00:00 2001 From: Kingtous Date: Mon, 25 Jul 2022 16:26:51 +0800 Subject: [PATCH] add: abModel Signed-off-by: Kingtous --- flutter/lib/models/ab_model.dart | 56 ++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 flutter/lib/models/ab_model.dart diff --git a/flutter/lib/models/ab_model.dart b/flutter/lib/models/ab_model.dart new file mode 100644 index 000000000..44357079c --- /dev/null +++ b/flutter/lib/models/ab_model.dart @@ -0,0 +1,56 @@ +import 'dart:convert'; + +import 'package:flutter/material.dart'; +import 'package:flutter_hbb/models/model.dart'; +import 'package:http/http.dart' as http; + +class AbModel with ChangeNotifier { + var abLoading = false; + var abError = ""; + var tags = []; + var peers = []; + + WeakReference parent; + + AbModel(this.parent); + + FFI? get _ffi => parent.target; + + Future getAb() async { + abLoading = true; + notifyListeners(); + // request + final api = "${await getApiServer()}/api/ab/get"; + debugPrint("request $api with post ${await _getHeaders()}"); + final resp = await http.post(Uri.parse(api), headers: await _getHeaders()); + abLoading = false; + Map json = jsonDecode(resp.body); + if (json.containsKey('error')) { + abError = json['error']; + } else if (json.containsKey('data')) { + // {"tags":["aaa","bbb"], + // "peers":[{"id":"aa1234","username":"selfd", + // "hostname":"PC","platform":"Windows","tags":["aaa"]}]} + final data = jsonDecode(json['data']); + tags = data['tags']; + peers = data['peers']; + } + print(json); + notifyListeners(); + return resp.body; + } + + Future getApiServer() async { + return await _ffi?.bind.mainGetApiServer() ?? ""; + } + + void reset() { + tags.clear(); + peers.clear(); + notifyListeners(); + } + + Future>? _getHeaders() { + return _ffi?.getHttpHeaders(); + } +}