Skip to content
Snippets Groups Projects
cesium_plus.dart 4.05 KiB
import 'dart:convert';
import 'dart:io';
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:gecko/globals.dart';
import 'package:path_provider/path_provider.dart';
// import 'package:http/http.dart' as http;

class CesiumPlusProvider with ChangeNotifier {
  TextEditingController cesiumName = TextEditingController();
  Image defaultAvatar(double? size) =>
      Image.asset(('assets/icon_user.png'), height: size);

  CancelToken avatarCancelToken = CancelToken();

  Future<List> _buildQuery(_pubkey) async {
    var queryGetAvatar = json.encode({
      "query": {
        "bool": {
          "should": [
            {
              "match": {
                '_id': {"query": _pubkey, "boost": 2}
              }
            },
            {
              "prefix": {'_id': _pubkey}
            }
          ]
        }
      },
      "highlight": {
        "fields": {"title": {}, "tags": {}}
      },
      "from": 0,
      "size": 100,
      "_source": [
        "title",
        "avatar",
        "avatar._content_type",
        "description",
        "city",
        "address",
        "socials.url",
        "creationTime",
        "membersCount",
        "type"
      ],
      "indices_boost": {"user": 100, "page": 1, "group": 0.01}
    });

    String requestUrl = "/user,page,group/profile,record/_search";
    String podRequest = cesiumPod + requestUrl;

    Map<String, String> headers = {
      'Content-type': 'application/json',
      'Accept': 'application/json',
    };

    return [podRequest, queryGetAvatar, headers];
  }

  Future<String> getName(String? _pubkey) async {
    String? _name;

    if (g1WalletsBox.get(_pubkey)!.csName != null) {
      return g1WalletsBox.get(_pubkey)!.csName!;
    }

    List queryOptions = await _buildQuery(_pubkey);