Merge branch 'master' of tzw/fcs into master

This commit is contained in:
2024-10-08 01:44:03 +06:30
committed by Gogs
15 changed files with 75 additions and 69 deletions

View File

@@ -2,35 +2,25 @@ import 'package:flutter/material.dart';
import 'package:logging/logging.dart';
enum Flavor { UNSET, DEV, STAGING, PRODUCTION, LOCAL }
const FlavorNames = ["Unset", "Development", "Staging", "Production", "Local"];
class Config {
static Config _instance = Config(
flavor: Flavor.UNSET,
apiURL: "",
bucketName: "",
reportProjectID: "",
reportURL: "");
static Config _instance = Config(flavor: Flavor.UNSET, apiURL: "");
final Flavor flavor;
final String name;
final Color color;
final String apiURL;
final String reportURL;
final Level level;
final String reportProjectID;
final String bucketName;
factory Config(
{required Flavor flavor,
required String apiURL,
required String reportURL,
required String reportProjectID,
required String bucketName,
Color color= Colors.blue,
Level level= Level.SEVERE}) {
_instance = Config._internal(flavor, FlavorNames[flavor.index], color,
apiURL, reportURL, level, reportProjectID, bucketName);
Color color = Colors.blue,
Level level = Level.SEVERE}) {
_instance = Config._internal(
flavor, FlavorNames[flavor.index], color, apiURL, level);
Logger.root.level = level;
Logger.root.onRecord.listen((record) {
@@ -41,8 +31,7 @@ class Config {
return _instance;
}
Config._internal(this.flavor, this.name, this.color, this.apiURL,
this.reportURL, this.level, this.reportProjectID, this.bucketName);
Config._internal(this.flavor, this.name, this.color, this.apiURL, this.level);
static Config get instance {
return _instance;

View File

@@ -1,12 +1,13 @@
import 'dart:convert';
import 'package:fcs/config.dart';
import 'package:fcs/constants.dart';
import 'package:fcs/domain/entities/package.dart';
import 'package:fcs/helpers/api_helper.dart';
import 'package:fcs/helpers/firebase_helper.dart';
import 'package:logging/logging.dart';
import '../services/services.dart';
class PackageDataProvider {
final log = Logger('PackageDataProvider');
@@ -70,7 +71,7 @@ class PackageDataProvider {
try {
var data = await requestAPI(
"/api/fts/$packages_collection/$escapePackage/$limit", "GET",
url: Config.instance.reportURL, token: await getToken());
url: Services.setting.reportURL, token: await getToken());
if (data == null) return [];
@@ -105,7 +106,7 @@ class PackageDataProvider {
};
var result = await requestAPI("/api/data/packages", "POST",
token: await getToken(),
url: Config.instance.reportURL,
url: Services.setting.reportURL,
payload: jsonEncode(data));
if (result == null) return packages;
result.forEach((d) {

View File

@@ -4,8 +4,7 @@ import 'package:fcs/domain/entities/pickup.dart';
import 'package:fcs/helpers/api_helper.dart';
import 'package:fcs/helpers/firebase_helper.dart';
import 'package:logging/logging.dart';
import '../../config.dart';
import '../services/services.dart';
class PickupDataProvider {
final log = Logger('PickupDataProvider');
@@ -34,7 +33,7 @@ class PickupDataProvider {
};
var result = await requestAPI("/api/data/pickups", "POST",
token: await getToken(),
url: Config.instance.reportURL,
url: Services.setting.reportURL,
payload: jsonEncode(data));
if (result == null) return pickups;
result.forEach((d) {

View File

@@ -1,13 +1,14 @@
import 'dart:convert';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:fcs/config.dart';
import 'package:fcs/constants.dart';
import 'package:fcs/domain/entities/user.dart';
import 'package:fcs/helpers/api_helper.dart';
import 'package:fcs/helpers/firebase_helper.dart';
import 'package:logging/logging.dart';
import '../services/services.dart';
class UserDataProvider {
final log = Logger('UserDataProvider');
@@ -66,7 +67,7 @@ class UserDataProvider {
try {
var data = await requestAPI(
"/api/fts/$user_collection/$escapeBuyer/$limit", "GET",
url: Config.instance.reportURL, token: await getToken());
url: Services.setting.reportURL, token: await getToken());
if (data == null) return [];

View File

@@ -24,6 +24,7 @@ import 'package:fcs/data/services/rate_service.dart';
import 'package:fcs/data/services/shipment_imp.dart';
import 'package:fcs/data/services/shipment_service.dart';
import '../../domain/entities/setting.dart';
import 'auth_imp.dart';
import 'auth_service.dart';
import 'common_imp.dart';
@@ -37,6 +38,8 @@ import 'user_service.dart';
class Services {
static final Services instance = Services._();
static Setting setting = Setting();
late AuthService _authService;
late UserService _userService;

View File

@@ -10,6 +10,9 @@ List<Day> dayLists = [
class Setting {
final int supportBuildNum;
final String reportURL;
final String reportProjectID;
final String bucketName;
// contact page
String? usaAddress;
String? mmAddress;
@@ -24,7 +27,7 @@ class Setting {
String? about;
String? courierWebsite;
String? deactivateTextEn;
String? deactivateTextMm;
String? deactivateTextMm;
List<String> shipmentTypes;
@@ -44,27 +47,32 @@ class Setting {
this.shipmentTypes = const [],
this.courierWebsite,
this.deactivateTextEn,
this.deactivateTextMm});
this.deactivateTextMm,
this.bucketName = '',
this.reportProjectID = '',
this.reportURL = ''});
factory Setting.fromMap(Map<String, dynamic> map) {
return Setting(
supportBuildNum: map['support_build_number'],
inviteRequired: map['invite_required'],
appUrl: map['app_url'],
usaAddress: map['usa_address'],
mmAddress: map['mm_address'],
usaContactNumber: map['usa_contact_number'],
mmContactNumber: map['mm_contact_number'],
emailAddress: map['email_address'],
facebookLink: map['facebook_link'],
about: map['about'],
termsEng: map['terms_eng_markdown'],
termsMm: map['terms_mm_markdown'],
shipmentTypes: List.from(map['shipment_types']),
courierWebsite: map['courier_website'],
deactivateTextEn: map['deactivate_text_en']??"",
deactivateTextMm: map['deactivate_text_mm']??""
);
supportBuildNum: map['support_build_number'],
inviteRequired: map['invite_required'],
appUrl: map['app_url'],
usaAddress: map['usa_address'],
mmAddress: map['mm_address'],
usaContactNumber: map['usa_contact_number'],
mmContactNumber: map['mm_contact_number'],
emailAddress: map['email_address'],
facebookLink: map['facebook_link'],
about: map['about'],
termsEng: map['terms_eng_markdown'],
termsMm: map['terms_mm_markdown'],
shipmentTypes: List.from(map['shipment_types']),
courierWebsite: map['courier_website'],
deactivateTextEn: map['deactivate_text_en'] ?? "",
deactivateTextMm: map['deactivate_text_mm'] ?? "",
reportProjectID: map['report_project_id'] ?? "",
reportURL: map['report_url'] ?? "",
bucketName: map['bucket_name'] ?? '');
}
@override

View File

@@ -37,7 +37,7 @@ Future<dynamic> requestAPI(String path, method,
if (devInfo.deviceID != null) {
headers["Device"] = devInfo.deviceID ?? "" + ":" + deviceName;
}
headers["Project-ID"] = Config.instance.reportProjectID;
headers["Project-ID"] = Services.setting.reportProjectID;
BaseOptions options = new BaseOptions(
method: method,
@@ -99,7 +99,7 @@ Future<dynamic> requestDownloadAPI(String path, method,
var _downloadData = StringBuffer();
var fileSave = new File(filePath!);
var request = await client.getUrl(Uri.parse("$baseUrl$path"));
request.headers.set("Project-ID", Config.instance.reportProjectID);
request.headers.set("Project-ID", Services.setting.reportProjectID);
request.headers
.set(HttpHeaders.contentTypeHeader, "application/json; charset=UTF-8");
if (token != null) {
@@ -140,7 +140,7 @@ Future<dynamic> requestDownloadPDFAPI(String path, method,
// var _downloadData = StringBuffer();
var fileSave = new File(filePath!);
var request = await client.getUrl(Uri.parse("$baseUrl$path"));
request.headers.set("Project-ID", Config.instance.reportProjectID);
request.headers.set("Project-ID", Services.setting.reportProjectID);
if (token != null) {
request.headers.set("Token", token);
}
@@ -188,7 +188,7 @@ Future<dynamic> requestDownload(String path, method,
HttpClient client = new HttpClient();
// var _downloadData = StringBuffer();
var request = await client.postUrl(Uri.parse("$baseUrl$path"));
request.headers.set("Project-ID", Config.instance.reportProjectID);
request.headers.set("Project-ID", Services.setting.reportProjectID);
if (token != null) {
request.headers.set("Token", token);
}
@@ -244,7 +244,7 @@ Future<File> downloadPDF(
await requestDownload("/api/pdf", "POST",
filePath: path,
url: Config.instance.reportURL,
url: Services.setting.reportURL,
token: await getToken(),
payload: jsonEncode(data), onDownloadDone: (f) async {
completer.complete(f);

View File

@@ -21,9 +21,9 @@ Future<void> main() async {
color: Colors.blue,
apiURL: "http://192.168.100.150:9090",
// apiURL: "https://asia-northeast1-fcs-dev1.cloudfunctions.net/API13",
reportURL: "http://petrok.mokkon.com:7071",
reportProjectID: "fcs-dev",
bucketName: "gs://fcs-dev1-us",
// reportURL: "http://petrok.mokkon.com:7071",
// reportProjectID: "fcs-dev",
// bucketName: "gs://fcs-dev1-us",
level: Level.ALL);
runApp(App(title: "FCS - Dev"));
}

View File

@@ -9,10 +9,12 @@ void main() {
Config(
flavor: Flavor.DEV,
color: Colors.blue,
reportURL: "http://petrok.mokkon.com:8091",
reportProjectID: "fcs-dev",
apiURL: "http://192.168.1.155:7777",
bucketName: "gs://fcs-dev1-us",
// reportURL: "http://petrok.mokkon.com:8091",
// reportProjectID: "fcs-dev",
// bucketName: "gs://fcs-dev1-us",
level: Level.ALL);
runApp(App(title: "FCS - Dev local",));
runApp(App(
title: "FCS - Dev local",
));
}

View File

@@ -16,9 +16,9 @@ Future<void> main() async {
flavor: Flavor.PRODUCTION,
color: Colors.blue,
apiURL: "https://asia-northeast1-fcs-prod1.cloudfunctions.net/API13",
reportURL: "http://petrok.mokkon.com:8092",
reportProjectID: "fcs-prod",
bucketName: "gs://fcs-prod1",
// reportURL: "http://petrok.mokkon.com:8092",
// reportProjectID: "fcs-prod",
// bucketName: "gs://fcs-prod1",
level: Level.ALL);
runApp(App(title: "FCS"));
}

View File

@@ -2,10 +2,10 @@ import 'dart:async';
import 'dart:convert';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:fcs/config.dart';
import 'package:logging/logging.dart';
import '../../../constants.dart';
import '../../../data/services/services.dart';
import '../../../domain/entities/user.dart';
import '../../../helpers/api_helper.dart';
import '../../../helpers/firebase_helper.dart';
@@ -56,7 +56,7 @@ class ConsigneeSelectionModel extends BaseModel {
var result = await requestAPI(
"/api/fts/$user_collection/$escapeSender/$rowPerPage", "GET",
url: Config.instance.reportURL, token: await getToken());
url: Services.setting.reportURL, token: await getToken());
if (result != null) {
for (var row in result) {

View File

@@ -3,9 +3,8 @@ import 'dart:convert';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:logging/logging.dart';
import '../../../config.dart';
import '../../../constants.dart';
import '../../../data/services/services.dart';
import '../../../domain/entities/user.dart';
import '../../../helpers/api_helper.dart';
import '../../../helpers/firebase_helper.dart';
@@ -57,7 +56,7 @@ class SenderSelectionModel extends BaseModel {
var result = await requestAPI(
"/api/fts/$user_collection/$escapeSender/$rowPerPage", "GET",
url: Config.instance.reportURL, token: await getToken());
url: Services.setting.reportURL, token: await getToken());
if (result != null) {
for (var row in result) {

View File

@@ -157,9 +157,12 @@ class FcsShipmentModel extends BaseModel {
void initUser(user) {
super.initUser(user);
_loadShipmentTypes();
_loadShipmentConsignees();
_loadShipmentPorts();
if (user != null && user.hasFcsShipments()) {
_loadShipmentTypes();
_loadShipmentConsignees();
_loadShipmentPorts();
}
}
@override

View File

@@ -141,6 +141,7 @@ class MainModel extends ChangeNotifier {
try {
Services.instance.authService.getSetting().listen((event) {
this.setting = event;
Services.setting = event;
models.forEach((m) => m.initSetting(setting));
notifyListeners();
});

View File

@@ -133,7 +133,7 @@ class _PackageInfoState extends State<PackageInfo> {
if (d == null) return;
_changeDeliverayAddress(d);
}
: () {},
: null,
);
return LocalProgress(