Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 6 additions & 11 deletions lib/app_config.dart
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'env.dart';

import 'routes/routes.dart';
import 'app_theme.dart';
import 'vaahextendflutter/tag/tag_panel.dart';
import 'view/pages/home.dart';
import 'package:team/app_theme.dart';
import 'package:team/env.dart';
import 'package:team/routes/middleware.dart';
import 'package:team/vaahextendflutter/widgets/debug.dart';

final _navigatorKey = GlobalKey<NavigatorState>();

Expand All @@ -20,12 +18,9 @@ class AppConfig extends StatelessWidget {
theme: ThemeData(
primarySwatch: AppTheme.colors['primary'],
),
onGenerateInitialRoutes: (String initialRoute) {
return [TeamHomePage.route()];
},
onGenerateRoute: onGenerateRoute,
onGenerateRoute: routeMiddleware,
builder: (BuildContext context, Widget? child) {
return TagPanelHost(
return DebugWidget(
navigatorKey: _navigatorKey,
child: child!,
);
Expand Down
5 changes: 1 addition & 4 deletions lib/app_theme.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import 'package:flutter/material.dart';

import 'vaahextendflutter/base/base_theme.dart';
import 'package:team/vaahextendflutter/base/base_theme.dart';

class AppTheme {
static final Map<String, MaterialColor> colors = Map.of(BaseTheme.colors);
Expand All @@ -11,8 +10,6 @@ class AppTheme {
}
}



// To define new color developer should visit https://colors.eva.design/

const MaterialColor pink = MaterialColor(
Expand Down
34 changes: 17 additions & 17 deletions lib/controllers/base_controller.dart
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
import 'package:get/get.dart';

import '../env.dart';
import '../app_theme.dart';
import '../vaahextendflutter/helpers/console.dart';
import '../vaahextendflutter/services/api.dart';
import 'package:get_storage/get_storage.dart';
import 'package:team/app_theme.dart';
import 'package:team/controllers/root_assets_controller.dart';
import 'package:team/env.dart';
import 'package:team/vaahextendflutter/helpers/console.dart';
import 'package:team/vaahextendflutter/services/api.dart';

class BaseController extends GetxController {
Future<void> init() async {
String environment =
const String.fromEnvironment('environment', defaultValue: 'default');
final EnvController envController = Get.put(
EnvController(
environment,
),
);
Console.info('Env Type: ${envController.config.envType}');
Console.info(
'Version: ${envController.config.version}+${envController.config.build}',
);
await Api.initApi();
await GetStorage.init();
initEnvController();
AppTheme.init();
await Api.init();
Get.put(RootAssetsController());
}
}

void initEnvController() {
String environment = const String.fromEnvironment('environment', defaultValue: 'default');
final EnvController envController = Get.put(EnvController(environment));
Console.info('Env Type: ${envController.config.envType}');
Console.info('Version: ${envController.config.version}+${envController.config.build}');
}
30 changes: 30 additions & 0 deletions lib/controllers/root_assets_controller.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import 'package:get/get.dart';
import 'package:get_storage/get_storage.dart';

class RootAssetsController extends GetxController {

RootAssetsController() {
if(storage.read('apiToken') != null){
// get user by token User.byToken(); USE WEBHOOKS and SOCKETS
}
}

final storage = GetStorage();

Map? _user;
Map? get user => _user;
set user(Map? user) {
_user = user;
update();
}

String? _apiToken;
String? get apiToken => _apiToken;
set apiToken(String? apiToken) {
storage.write('apiToken', apiToken);
_apiToken = apiToken;
update();
}

// TODO: Need to use api token in Api.ajax
}
6 changes: 2 additions & 4 deletions lib/env.dart
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
// ignore_for_file: public_member_api_docs, sort_constructors_first
import 'dart:io';

import 'package:flutter/material.dart';
import 'package:get/get.dart';

import 'app_theme.dart';
import 'vaahextendflutter/helpers/console.dart';
import 'package:team/app_theme.dart';
import 'package:team/vaahextendflutter/helpers/console.dart';

// After changing any const you will need to restart the app (Hot-reload won't work).

Expand Down
5 changes: 2 additions & 3 deletions lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';

import 'app_config.dart';
import 'controllers/base_controller.dart';
import 'package:team/app_config.dart';
import 'package:team/controllers/base_controller.dart';

void main() async {
WidgetsFlutterBinding.ensureInitialized();
Expand Down
113 changes: 113 additions & 0 deletions lib/models/user.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
import 'package:get/get.dart';
import 'package:team/controllers/root_assets_controller.dart';
import 'package:team/vaahextendflutter/services/api.dart';

class User {
static const String apiEndPoint = '/users'; // TODO: change end point
static final RootAssetsController rootAssetsController = Get.find<RootAssetsController>();

static bool hasPermission(String value) {
if (rootAssetsController.user == null || rootAssetsController.user?['permissions'] == null) {
return false;
}
return (rootAssetsController.user?['permissions'] as List<String>).contains(value);
}

static Future<void> signin(String identifier, String password) async {
Map<String, dynamic> user = await Api.ajax(
url: apiEndPoint,
method: 'post',
params: {"identifier": identifier, "password": password},
);
rootAssetsController.user = user;
rootAssetsController.apiToken = user['token'];
return;
}

static Future<void> forgotPassword(String identifier) async {
await Api.ajax(
url: apiEndPoint, // TODO: change end point
method: 'post',
params: {"identifier": identifier},
);
// TODO: On the same page of the call Show enter otp, reset pass
return;
}

static Future<void> signout() async {
rootAssetsController.user = null;
return;
}

static Future<Map?> createItem(Map<String, dynamic> item) async {
return await Api.ajax(
url: apiEndPoint, // TODO: change end point
method: 'post',
params: item,
);
}

static Future<List<Map>?> getList(Map<String, dynamic> query) async {
return await Api.ajax(
url: apiEndPoint, // TODO: change end point
method: 'get',
query: query,
);
}

static Future<List<Map>?> updateList(String type, List<Map> items) async {
return await Api.ajax(
url: apiEndPoint, // TODO: change end point
method: 'post',
params: {'type': type, 'data': items},
);
}

static Future<List<Map>?> deleteList(String type, List<Map> items) async {
return await Api.ajax(
url: apiEndPoint, // TODO: change end point
method: 'delete',
params: {'type': type, 'data': items},
);
}

static Future<List<Map>?> listAction(String type, List<Map> items) async {
return await Api.ajax(
url: apiEndPoint, // TODO: change end point
method: 'patch',
params: {'type': type, 'data': items},
);
}

static Future<Map?> getItem(String id) async {
return await Api.ajax(
url: apiEndPoint, // TODO: change end point
method: 'get',
query: {"id": id},
);
}

static Future<Map?> updateItem(String id, Map item) async {
return await Api.ajax(
url: apiEndPoint, // TODO: change end point
method: 'patch',
params: {'id': id, 'item': item},
);
}

static Future<Map?> deleteItem(String id) async {
return await Api.ajax(
url: apiEndPoint, // TODO: change end point
method: 'delete',
params: {"id": id},
);
}

static Future<Map?> itemAction(String id, String type) async {
return await Api.ajax(
url: apiEndPoint, // TODO: change end point
method: 'post',
params: {'id': id, 'type': type},
);
}
}
10 changes: 10 additions & 0 deletions lib/routes/middleware.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import 'package:flutter/material.dart';
import 'package:team/routes/routes.dart';
import 'package:team/view/pages/not_found.dart';

Route<dynamic>? routeMiddleware(RouteSettings route) {
if (!routes.containsKey(route.name)) {
return NotFoundPage.route();
}
return routes[route.name]!();
}
23 changes: 10 additions & 13 deletions lib/routes/routes.dart
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
import 'package:flutter/material.dart';

import '../view/pages/home.dart';
import '../view/pages/something_went_wrong.dart';


Map<String, Route<void>> routes = {
'/': TeamHomePage.route(),
SomethingWentWrong.routeName: SomethingWentWrong.route(),
};

Route<dynamic>? onGenerateRoute(RouteSettings route) {
return routes[route.name] ?? SomethingWentWrong.route();
}
import 'package:team/view/pages/home.dart';
import 'package:team/view/pages/not_found.dart';
import 'package:team/view/pages/permission_denied.dart';

final Map<String, Route<dynamic> Function()> routes = {
'/': HomePage.route,
HomePage.routePath: HomePage.route,
NotFoundPage.routePath: NotFoundPage.route,
PermissionDeniedPage.routePath: PermissionDeniedPage.route,
};
4 changes: 2 additions & 2 deletions lib/vaahextendflutter/helpers/constants.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';

const double deafaultPadding = 16.0;
const double deafaultMargin = 16.0;
const double defaultPadding = 16.0;
const double defaultMargin = 16.0;

// Common Widgets
const emptyWidget = SizedBox();
Expand Down
2 changes: 1 addition & 1 deletion lib/vaahextendflutter/helpers/helpers.dart
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class Helpers {
AlertDialog(
shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.all(
Radius.circular(deafaultPadding),
Radius.circular(defaultPadding),
),
),
contentPadding: EdgeInsets.zero,
Expand Down
Loading