Commit 1fee488a authored by Calebe Rocha's avatar Calebe Rocha
Browse files

Merge branch 'develop' into feat/apk_settings

parents ab43bf98 73391b2c
Showing with 180 additions and 16 deletions
+180 -16
[] unificar telas de cadastro
[] extrair autocomplete para componente
[] melhorar o visual da lista de opções do autocomplete
[] colocar chave da API no .env e trocar a chave no console.
\ No newline at end of file
......@@ -26,7 +26,7 @@ apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android {
compileSdkVersion 30
compileSdkVersion 31
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
......
......@@ -140,7 +140,7 @@
9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
2A4C32DD416AB0E8E7535EAC /* [CP] Embed Pods Frameworks */,
510A4B67432F9BC2FAE44F15 /* [CP] Copy Pods Resources */,
B336D279043F45A45D6E31C9 /* [CP] Copy Pods Resources */,
);
buildRules = (
);
......@@ -261,6 +261,23 @@
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
};
B336D279043F45A45D6E31C9 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Copy Pods Resources";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
showEnvVarsInLog = 0;
};
BD1A9A31753C14C5DE35E157 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
......
class Config {
static String apiURL =
"http://${const String.fromEnvironment('BASE_URL')}/api/v1";
static String GOOGLE_API_KEY = "AIzaSyDI7x8LidXPYqOleg7SRXm_hHP7xYIBqz0";
}
import 'package:flutter/material.dart';
enum OrderStatus {
ALL,
IN_CART,
WAITING_FOR_PARTNER,
ACCEPTED,
......@@ -30,6 +31,8 @@ extension OrderStatusDescription on OrderStatus {
return 'Em entrega';
case OrderStatus.DELIVERED:
return 'Entregue';
case OrderStatus.ALL:
return 'Todos';
default:
return 'Desconhecido';
}
......@@ -53,8 +56,14 @@ extension OrderStatusDescription on OrderStatus {
return Colors.blue;
case OrderStatus.DELIVERED:
return Colors.green;
case OrderStatus.ALL:
return Colors.grey;
default:
return Colors.grey;
}
}
String get value {
return this.toString().split('.').last;
}
}
enum PartnerStatusEnum {
PENDING,
APPROVED,
REJECTED,
}
extension PartnerStatusDescription on PartnerStatusEnum {
String get label {
switch (this) {
case PartnerStatusEnum.PENDING:
return 'Pendente';
case PartnerStatusEnum.APPROVED:
return 'Aceito';
case PartnerStatusEnum.REJECTED:
return 'Rejeitado';
default:
return 'Desconhecido';
}
}
}
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class SnackbarController {
open(String text, BuildContext context) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(text),
),
);
}
}
......@@ -2,10 +2,13 @@ import 'package:apus_drones_mobile/providers/ActiveBarItemProvider.dart';
import 'package:apus_drones_mobile/providers/AuthProvider.dart';
import 'package:apus_drones_mobile/providers/ProductsToDeliverStateProvider.dart';
import 'package:apus_drones_mobile/screens/CartScreen.dart';
import 'package:apus_drones_mobile/screens/CustomerProfile.dart';
import 'package:apus_drones_mobile/screens/CustomerEditProfileScreen.dart';
import 'package:apus_drones_mobile/screens/HomeScreen.dart';
import 'package:apus_drones_mobile/screens/LoginScreen.dart';
import 'package:apus_drones_mobile/screens/OrdersScreen.dart';
import 'package:apus_drones_mobile/screens/PartnerOrdersScreen.dart';
import 'package:apus_drones_mobile/screens/PartnerProfile.dart';
import 'package:apus_drones_mobile/screens/PaymentScreen.dart';
import 'package:apus_drones_mobile/screens/clients/ListOfPartners.dart';
import 'package:apus_drones_mobile/theme/AppTheme.dart';
......
......@@ -5,18 +5,20 @@ part 'AddressModel.g.dart';
//flutter packages pub run build_runner build --delete-conflicting-outputs
@JsonSerializable()
class AddressModel {
final int id;
final int? id;
final String description;
final int number;
final String? zipCode;
final double lat;
final double lng;
AddressModel({
required this.id,
this.id,
required this.description,
required this.number,
required this.lat,
required this.lng,
this.zipCode,
});
factory AddressModel.fromJson(Map<String, dynamic> json) =>
......
......@@ -8,11 +8,12 @@ part of 'AddressModel.dart';
AddressModel _$AddressModelFromJson(Map<String, dynamic> json) {
return AddressModel(
id: json['id'] as int,
id: json['id'] as int?,
description: json['description'] as String,
number: json['number'] as int,
lat: (json['lat'] as num).toDouble(),
lng: (json['lng'] as num).toDouble(),
zipCode: json['zipCode'] as String?,
);
}
......@@ -21,6 +22,7 @@ Map<String, dynamic> _$AddressModelToJson(AddressModel instance) =>
'id': instance.id,
'description': instance.description,
'number': instance.number,
'zipCode': instance.zipCode,
'lat': instance.lat,
'lng': instance.lng,
};
import 'package:apus_drones_mobile/models/AddressModel.dart';
import 'package:json_annotation/json_annotation.dart';
part 'CreateCustomer.g.dart';
//flutter packages pub run build_runner build --delete-conflicting-outputs
@JsonSerializable()
class CreateCustomer {
String address;
AddressModel address;
String avatarUrl;
String cpfCnpj;
String email;
......
......@@ -8,7 +8,7 @@ part of 'CreateCustomer.dart';
CreateCustomer _$CreateCustomerFromJson(Map<String, dynamic> json) {
return CreateCustomer(
json['address'] as String,
AddressModel.fromJson(json['address'] as Map<String, dynamic>),
json['avatarUrl'] as String,
json['cpfCnpj'] as String,
json['email'] as String,
......
......@@ -69,6 +69,7 @@ K _$enumDecode<K, V>(
}
const _$OrderStatusEnumMap = {
OrderStatus.ALL: 'ALL',
OrderStatus.IN_CART: 'IN_CART',
OrderStatus.WAITING_FOR_PARTNER: 'WAITING_FOR_PARTNER',
OrderStatus.ACCEPTED: 'ACCEPTED',
......
import 'package:apus_drones_mobile/constants/PartnerStatusEnum.dart';
import 'package:apus_drones_mobile/models/AddressModel.dart';
import 'package:json_annotation/json_annotation.dart';
......@@ -11,6 +12,8 @@ class PartnerModel {
final String? email;
final String? cpfCnpj;
final List<AddressModel>? addresses;
final bool? deleted;
PartnerStatusEnum? status;
PartnerModel({
required this.id,
......@@ -19,6 +22,8 @@ class PartnerModel {
this.email,
this.cpfCnpj,
this.addresses,
this.deleted,
this.status,
});
factory PartnerModel.fromJson(Map<String, dynamic> json) =>
......@@ -30,5 +35,3 @@ class PartialPartner {
final int id;
PartialPartner(this.id);
}
......@@ -16,6 +16,8 @@ PartnerModel _$PartnerModelFromJson(Map<String, dynamic> json) {
addresses: (json['addresses'] as List<dynamic>?)
?.map((e) => AddressModel.fromJson(e as Map<String, dynamic>))
.toList(),
deleted: json['deleted'] as bool?,
status: _$enumDecodeNullable(_$PartnerStatusEnumEnumMap, json['status']),
);
}
......@@ -27,4 +29,49 @@ Map<String, dynamic> _$PartnerModelToJson(PartnerModel instance) =>
'email': instance.email,
'cpfCnpj': instance.cpfCnpj,
'addresses': instance.addresses,
'deleted': instance.deleted,
'status': _$PartnerStatusEnumEnumMap[instance.status],
};
K _$enumDecode<K, V>(
Map<K, V> enumValues,
Object? source, {
K? unknownValue,
}) {
if (source == null) {
throw ArgumentError(
'A value must be provided. Supported values: '
'${enumValues.values.join(', ')}',
);
}
return enumValues.entries.singleWhere(
(e) => e.value == source,
orElse: () {
if (unknownValue == null) {
throw ArgumentError(
'`$source` is not one of the supported values: '
'${enumValues.values.join(', ')}',
);
}
return MapEntry(unknownValue, enumValues.values.first);
},
).key;
}
K? _$enumDecodeNullable<K, V>(
Map<K, V> enumValues,
dynamic source, {
K? unknownValue,
}) {
if (source == null) {
return null;
}
return _$enumDecode<K, V>(enumValues, source, unknownValue: unknownValue);
}
const _$PartnerStatusEnumEnumMap = {
PartnerStatusEnum.PENDING: 'PENDING',
PartnerStatusEnum.APPROVED: 'APPROVED',
PartnerStatusEnum.REJECTED: 'REJECTED',
};
......@@ -70,6 +70,7 @@ K _$enumDecode<K, V>(
}
const _$OrderStatusEnumMap = {
OrderStatus.ALL: 'ALL',
OrderStatus.IN_CART: 'IN_CART',
OrderStatus.WAITING_FOR_PARTNER: 'WAITING_FOR_PARTNER',
OrderStatus.ACCEPTED: 'ACCEPTED',
......
import 'package:json_annotation/json_annotation.dart';
part 'PartnerStatus.g.dart';
//flutter packages pub run build_runner build --delete-conflicting-outputs
@JsonSerializable()
class PartnerStatus {
bool approved;
PartnerStatus(this.approved);
factory PartnerStatus.fromJson(Map<String, dynamic> json) =>
_$PartnerStatusFromJson(json);
Map<String, dynamic> toJson() => _$PartnerStatusToJson(this);
}
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'PartnerStatus.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
PartnerStatus _$PartnerStatusFromJson(Map<String, dynamic> json) {
return PartnerStatus(
json['approved'] as bool,
);
}
Map<String, dynamic> _$PartnerStatusToJson(PartnerStatus instance) =>
<String, dynamic>{
'approved': instance.approved,
};
......@@ -29,7 +29,14 @@ class AuthProvider with ChangeNotifier {
}
Future<bool> isAuthenticated() async {
return await getToken() != null;
final token = await getTokenData();
if (token.isEmpty) {
return false;
}
final expTimestamp = token["exp"] ?? 0;
final expireDate = DateTime.fromMillisecondsSinceEpoch(expTimestamp * 1000);
final isExpired = expireDate.isBefore(DateTime.now());
return !isExpired;
}
Future<void> setToken(String token) async {
......
......@@ -4,6 +4,8 @@ import 'package:apus_drones_mobile/services/PartnerService.dart';
import 'package:apus_drones_mobile/widgets/Partner.dart';
import 'package:flutter/material.dart';
import 'PartnerDetailScreen.dart';
class AdminScreen extends StatefulWidget {
AdminScreen({Key? key}) : super(key: key);
......@@ -12,15 +14,14 @@ class AdminScreen extends StatefulWidget {
}
class _AdminScreenState extends State<AdminScreen> {
List<PartnerModel> partnerList=[];
List<PartnerModel> partnerList = [];
PartnerService service = new PartnerService();
@override
void initState() {
service.getAllPartners().then((value) => this.setState(() {
partnerList = value;
}));
partnerList = value;
}));
super.initState();
}
......@@ -47,7 +48,6 @@ class _AdminScreenState extends State<AdminScreen> {
Expanded(
child: ListView.builder(
itemBuilder: (ctx, index) => GestureDetector(
child: Partner(
model: this.partnerList[index],
),
......@@ -60,4 +60,6 @@ class _AdminScreenState extends State<AdminScreen> {
),
);
}
}
\ No newline at end of file
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment