You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
868 lines
43 KiB
868 lines
43 KiB
import 'package:cloud_firestore/cloud_firestore.dart';
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:flutter/cupertino.dart';
|
|
import 'package:teso/Classes/API%20Clasess/CouponHead.dart';
|
|
import 'package:teso/Classes/Payload.dart';
|
|
import 'package:teso/Pages/PageWidgets/Alerts/AlertTile.dart';
|
|
import 'package:teso/Pages/PageWidgets/Alerts/Redeemable.dart';
|
|
import 'package:teso/Pages/PageWidgets/Alerts/Refund.dart';
|
|
import 'package:teso/Pages/PageWidgets/Alerts/personalizedCoupon.dart';
|
|
import 'package:teso/Pages/PageWidgets/Alerts/post.dart';
|
|
import 'package:teso/Pages/PageWidgets/Alerts/requestTile.dart';
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
import 'package:http/http.dart' as http;
|
|
import 'package:teso/util/consts.dart';
|
|
import 'package:provider/provider.dart';
|
|
import 'package:teso/providers/user_provider.dart';
|
|
import 'dart:convert';
|
|
import 'package:teso/Notifications/NotificationPlugin.dart';
|
|
|
|
class Alerts extends StatefulWidget {
|
|
@override
|
|
_AlertsState createState() => _AlertsState();
|
|
}
|
|
|
|
class _AlertsState extends State<Alerts> {
|
|
List<QueryDocumentSnapshot> listMessage = new List.from([]);
|
|
String id = "";
|
|
int _limit = 20;
|
|
final int _limitIncrement = 20;
|
|
final ScrollController listScrollController = ScrollController();
|
|
SharedPreferences prefs;
|
|
bool loading = false;
|
|
|
|
Icon iconIndicator(String type) {
|
|
switch (type) {
|
|
case "alerts":
|
|
return Icon(
|
|
Icons.notifications,
|
|
color: Colors.grey[50],
|
|
);
|
|
break;
|
|
case "funds":
|
|
return Icon(
|
|
Icons.wallet_giftcard_outlined,
|
|
color: Colors.grey[50],
|
|
);
|
|
break;
|
|
case "redeemable":
|
|
return Icon(
|
|
Icons.redeem,
|
|
color: Colors.grey[50],
|
|
);
|
|
break;
|
|
case "gifted":
|
|
return Icon(
|
|
Icons.redeem,
|
|
color: Colors.grey[50],
|
|
);
|
|
break;
|
|
case "warning":
|
|
return Icon(
|
|
Icons.warning,
|
|
color: Colors.grey[50],
|
|
);
|
|
break;
|
|
case "friendapproval":
|
|
return Icon(
|
|
Icons.people_alt,
|
|
color: Colors.grey[50],
|
|
);
|
|
break;
|
|
default:
|
|
return Icon(
|
|
Icons.notifications,
|
|
color: Colors.grey[50],
|
|
);
|
|
break;
|
|
}
|
|
}
|
|
|
|
setTitle(value) {
|
|
switch (value) {
|
|
case "friendrequest":
|
|
return "Friend Request";
|
|
default:
|
|
return "";
|
|
}
|
|
}
|
|
|
|
setDescription(value) {
|
|
switch (value) {
|
|
case "friendrequest":
|
|
return " sent you a friend request";
|
|
case "friendapproval":
|
|
return " accepted your friend request !!!";
|
|
default:
|
|
return "";
|
|
}
|
|
}
|
|
|
|
_scrollListener() {
|
|
if (listScrollController.offset >=
|
|
listScrollController.position.maxScrollExtent &&
|
|
!listScrollController.position.outOfRange) {
|
|
print("reach the bottom");
|
|
setState(() {
|
|
print("reach the bottom");
|
|
_limit += _limitIncrement;
|
|
});
|
|
}
|
|
if (listScrollController.offset <=
|
|
listScrollController.position.minScrollExtent &&
|
|
!listScrollController.position.outOfRange) {
|
|
print("reach the top");
|
|
setState(() {
|
|
print("reach the top");
|
|
});
|
|
}
|
|
}
|
|
|
|
void initState() {
|
|
listScrollController.addListener(_scrollListener);
|
|
SharedPreferences.getInstance().then((value) => id = value.getString("id"));
|
|
super.initState();
|
|
}
|
|
|
|
void approveRelationship(userGUID) async {
|
|
prefs = await SharedPreferences.getInstance();
|
|
String token = prefs.getString("tokensTeso");
|
|
Map<String, String> requestHeaders = {
|
|
'Content-type': 'application/json',
|
|
'Authorization': token
|
|
};
|
|
String searchValue = userGUID;
|
|
var register = serverLocation + 'relationships/friendapproval';
|
|
var client = await http.post(Uri.parse(register),
|
|
body: json.encode(searchValue), headers: requestHeaders);
|
|
if (client.statusCode == 200) {
|
|
setState(() {});
|
|
Provider.of<UserProvider>(context, listen: false).loadFriends();
|
|
} else {
|
|
setState(() {});
|
|
}
|
|
}
|
|
|
|
void declineRelationship(userGUID) async {
|
|
prefs = await SharedPreferences.getInstance();
|
|
String token = prefs.getString("tokensTeso");
|
|
Map<String, String> requestHeaders = {
|
|
'Content-type': 'application/json',
|
|
'Authorization': token
|
|
};
|
|
String searchValue = userGUID;
|
|
var register = serverLocation + 'relationships/frienddecline';
|
|
var client = await http.post(Uri.parse(register),
|
|
body: json.encode(searchValue), headers: requestHeaders);
|
|
if (client.statusCode == 200) {
|
|
setState(() {});
|
|
Provider.of<UserProvider>(context, listen: false).loadFriends();
|
|
} else {
|
|
setState(() {});
|
|
}
|
|
}
|
|
|
|
void acceptCoupon(CouponsHead head) async {
|
|
setState(() {
|
|
loading = true;
|
|
});
|
|
try {
|
|
prefs = await SharedPreferences.getInstance();
|
|
String token = prefs.getString("tokensTeso");
|
|
Map<String, String> requestHeaders = {
|
|
'Content-type': 'application/json',
|
|
'Authorization': token
|
|
};
|
|
var register = serverLocation + 'coupons/acceptPersonalized';
|
|
var client = await http.post(Uri.parse(register),
|
|
body: json.encode(head), headers: requestHeaders);
|
|
if (client.statusCode == 200) {
|
|
} else if (client.statusCode == 400) {
|
|
Payload payload = new Payload();
|
|
payload.loadID = "TESN000";
|
|
payload.load1 = "CouponAcquisition";
|
|
|
|
await notificationPlugin.showNotification(
|
|
"Offer Expired",
|
|
"Unable to acquire coupon as this offer has expired!!",
|
|
payload.toString(),
|
|
);
|
|
} else {
|
|
Payload payload = new Payload();
|
|
payload.loadID = "TESN000";
|
|
payload.load1 = "CouponAcquisition";
|
|
|
|
await notificationPlugin.showNotification(
|
|
"Error Occurred",
|
|
"Unable to acquire coupon as this moment",
|
|
payload.toString(),
|
|
);
|
|
}
|
|
} catch (e) {
|
|
print(e);
|
|
Payload payload = new Payload();
|
|
payload.loadID = "TESN000";
|
|
payload.load1 = "CouponAcquisition";
|
|
|
|
await notificationPlugin.showNotification(
|
|
"Error Occurred",
|
|
"Unable to acquire coupon as this moment",
|
|
payload.toString(),
|
|
);
|
|
}
|
|
setState(() {
|
|
loading = false;
|
|
});
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
body: !loading
|
|
? Consumer<UserProvider>(
|
|
builder:
|
|
(BuildContext context, UserProvider value, Widget child) {
|
|
if (value != null) {
|
|
id = value.currentUser.userGUID;
|
|
return StreamBuilder(
|
|
stream: FirebaseFirestore.instance
|
|
.collection('notifications')
|
|
.doc(id != null ? id : "")
|
|
.collection(id != null ? id : "")
|
|
.orderBy('timestamp', descending: true)
|
|
.limit(_limit)
|
|
.snapshots(),
|
|
builder: (context, snapshot) {
|
|
if (!snapshot.hasData) {
|
|
return Center(
|
|
child: CircularProgressIndicator(
|
|
valueColor: AlwaysStoppedAnimation<Color>(
|
|
Theme.of(context).primaryColor)));
|
|
} else if (snapshot.data == null) {
|
|
return Center(
|
|
child: CircularProgressIndicator(
|
|
valueColor: AlwaysStoppedAnimation<Color>(
|
|
Theme.of(context).primaryColor)));
|
|
} else {
|
|
listMessage = snapshot.data.docs;
|
|
return ListView.builder(
|
|
// controller: listScrollController,
|
|
itemCount: listMessage.length,
|
|
itemBuilder: (BuildContext context, int index) {
|
|
int timeInMillis = int.parse(snapshot
|
|
.data.docs[index]['timestamp']
|
|
.toString());
|
|
DateTime date = DateTime.fromMillisecondsSinceEpoch(
|
|
timeInMillis);
|
|
|
|
switch (listMessage[index]["notificationType"]) {
|
|
case "friendrequest":
|
|
return buildRequest(
|
|
context: context,
|
|
approve: () => approveRelationship(
|
|
listMessage[index]["initiatorID"]),
|
|
decline: () => declineRelationship(
|
|
listMessage[index]["initiatorID"]),
|
|
timestamp: date,
|
|
description: listMessage[index]
|
|
["initiatorUsername"] +
|
|
setDescription(listMessage[index]
|
|
["notificationType"]),
|
|
thumbnail: listMessage[index]
|
|
["initiatorThumbnail"],
|
|
username: listMessage[index]
|
|
["initiatorUsername"],
|
|
icons: iconIndicator(
|
|
listMessage[index]["notificationType"],
|
|
),
|
|
);
|
|
break;
|
|
case "redeemable":
|
|
return Padding(
|
|
padding: EdgeInsets.symmetric(vertical: 8.0),
|
|
child: Dismissible(
|
|
key: Key(listMessage[index]["couponID"]),
|
|
background: Container(
|
|
height: 100,
|
|
decoration: BoxDecoration(
|
|
gradient: LinearGradient(
|
|
begin: Alignment.topCenter,
|
|
end: Alignment.bottomCenter,
|
|
colors: [
|
|
darkAccent,
|
|
accentMain,
|
|
],
|
|
),
|
|
),
|
|
child: Center(
|
|
child: Text(
|
|
"Cleared!!!!",
|
|
style: TextStyle(
|
|
color: Colors.white,
|
|
fontSize: 25),
|
|
),
|
|
),
|
|
),
|
|
child: buildRedeemableAlert(
|
|
context: context,
|
|
timestamp: date,
|
|
message: listMessage[index]["message"],
|
|
thumbnail: listMessage[index]
|
|
["productImage"],
|
|
icons: iconIndicator(listMessage[index]
|
|
["notificationType"]),
|
|
),
|
|
onDismissed: (direction) {
|
|
FirebaseFirestore.instance
|
|
.runTransaction(
|
|
(transaction) async {
|
|
transaction.delete(
|
|
listMessage[index].reference);
|
|
});
|
|
}),
|
|
);
|
|
break;
|
|
case "expired":
|
|
return Padding(
|
|
padding: EdgeInsets.symmetric(vertical: 8.0),
|
|
child: Dismissible(
|
|
key: Key(listMessage[index]["couponID"]),
|
|
background: Container(
|
|
height: 100,
|
|
decoration: BoxDecoration(
|
|
gradient: LinearGradient(
|
|
begin: Alignment.topCenter,
|
|
end: Alignment.bottomCenter,
|
|
colors: [
|
|
darkAccent,
|
|
accentMain,
|
|
],
|
|
),
|
|
),
|
|
child: Center(
|
|
child: Text(
|
|
"Cleared!!!!",
|
|
style: TextStyle(
|
|
color: Colors.white,
|
|
fontSize: 25),
|
|
),
|
|
),
|
|
),
|
|
child: buildRedeemableAlert(
|
|
context: context,
|
|
timestamp: date,
|
|
message: listMessage[index]["message"],
|
|
thumbnail: listMessage[index]
|
|
["productImage"],
|
|
icons: iconIndicator(listMessage[index]
|
|
["notificationType"]),
|
|
),
|
|
onDismissed: (direction) {
|
|
FirebaseFirestore.instance
|
|
.runTransaction(
|
|
(transaction) async {
|
|
transaction.delete(
|
|
listMessage[index].reference);
|
|
});
|
|
}),
|
|
);
|
|
break;
|
|
case "gifted":
|
|
return Padding(
|
|
padding: EdgeInsets.symmetric(vertical: 8.0),
|
|
child: Dismissible(
|
|
key: Key(listMessage[index]["couponID"]),
|
|
background: Container(
|
|
height: 100,
|
|
decoration: BoxDecoration(
|
|
gradient: LinearGradient(
|
|
begin: Alignment.topCenter,
|
|
end: Alignment.bottomCenter,
|
|
colors: [
|
|
darkAccent,
|
|
accentMain,
|
|
],
|
|
),
|
|
),
|
|
child: Center(
|
|
child: Text(
|
|
"Cleared!!!!",
|
|
style: TextStyle(
|
|
color: Colors.white,
|
|
fontSize: 25),
|
|
),
|
|
),
|
|
),
|
|
child: buildRedeemableAlert(
|
|
context: context,
|
|
timestamp: date,
|
|
message: listMessage[index]["message"],
|
|
thumbnail: listMessage[index]
|
|
["productImage"],
|
|
icons: iconIndicator(listMessage[index]
|
|
["notificationType"]),
|
|
),
|
|
onDismissed: (direction) {
|
|
FirebaseFirestore.instance
|
|
.runTransaction(
|
|
(transaction) async {
|
|
transaction.delete(
|
|
listMessage[index].reference);
|
|
});
|
|
}),
|
|
);
|
|
break;
|
|
case "likes":
|
|
return Padding(
|
|
padding: EdgeInsets.symmetric(vertical: 8.0),
|
|
child: Dismissible(
|
|
key: Key(listMessage[index]["timestamp"]
|
|
.toString()),
|
|
background: Container(
|
|
//height: 100,
|
|
decoration: BoxDecoration(
|
|
gradient: LinearGradient(
|
|
begin: Alignment.topCenter,
|
|
end: Alignment.bottomCenter,
|
|
colors: [
|
|
darkAccent,
|
|
accentMain,
|
|
],
|
|
),
|
|
),
|
|
child: Center(
|
|
child: Text(
|
|
"Cleared!!!!",
|
|
style: TextStyle(
|
|
color: Colors.white,
|
|
fontSize: 25),
|
|
),
|
|
),
|
|
),
|
|
child: buildAlert(
|
|
context: context,
|
|
timestamp: date,
|
|
username: listMessage[index]["message"],
|
|
description: listMessage[index]
|
|
["message"] +
|
|
setDescription(listMessage[index]
|
|
["notificationType"]),
|
|
thumbnail: listMessage[index]
|
|
["thumbnail"],
|
|
icons: iconIndicator(listMessage[index]
|
|
["notificationType"]),
|
|
),
|
|
onDismissed: (direction) {
|
|
FirebaseFirestore.instance
|
|
.runTransaction(
|
|
(transaction) async {
|
|
transaction.delete(
|
|
listMessage[index].reference);
|
|
});
|
|
}),
|
|
);
|
|
break;
|
|
case "comments":
|
|
return Padding(
|
|
padding: EdgeInsets.symmetric(vertical: 8.0),
|
|
child: Dismissible(
|
|
key: Key(listMessage[index]["timestamp"]
|
|
.toString()),
|
|
background: Container(
|
|
height: 100,
|
|
decoration: BoxDecoration(
|
|
gradient: LinearGradient(
|
|
begin: Alignment.topCenter,
|
|
end: Alignment.bottomCenter,
|
|
colors: [
|
|
darkAccent,
|
|
accentMain,
|
|
],
|
|
),
|
|
),
|
|
child: Center(
|
|
child: Text(
|
|
"Cleared!!!!",
|
|
style: TextStyle(
|
|
color: Colors.white,
|
|
fontSize: 25),
|
|
),
|
|
),
|
|
),
|
|
child: buildAlert(
|
|
context: context,
|
|
timestamp: date,
|
|
username: listMessage[index]["message"],
|
|
description: listMessage[index]
|
|
["message"] +
|
|
setDescription(listMessage[index]
|
|
["notificationType"]),
|
|
thumbnail: listMessage[index]
|
|
["thumbnail"],
|
|
icons: iconIndicator(listMessage[index]
|
|
["notificationType"]),
|
|
),
|
|
onDismissed: (direction) {
|
|
FirebaseFirestore.instance
|
|
.runTransaction(
|
|
(transaction) async {
|
|
transaction.delete(
|
|
listMessage[index].reference);
|
|
});
|
|
}),
|
|
);
|
|
break;
|
|
case "personalized":
|
|
return Padding(
|
|
padding: EdgeInsets.symmetric(vertical: 8.0),
|
|
child: buildPersonalizedAlert(
|
|
context: context,
|
|
timestamp: date,
|
|
message: listMessage[index]["message"],
|
|
thumbnail: listMessage[index]
|
|
["productImage"],
|
|
icons: iconIndicator(listMessage[index]
|
|
["notificationType"]),
|
|
decline: () => FirebaseFirestore.instance
|
|
.runTransaction(
|
|
(transaction) async {
|
|
transaction.delete(
|
|
listMessage[index].reference);
|
|
}),
|
|
accept: () {
|
|
var coup = jsonDecode(
|
|
listMessage[index]["coupon"]);
|
|
CouponsHead head = new CouponsHead();
|
|
head.businessId = coup["BusinessId"];
|
|
head.couponId =
|
|
listMessage[index].reference.id;
|
|
head.expiration = DateTime.parse(
|
|
coup["Expiration"].toString());
|
|
head.lower = coup["LowerLimit"];
|
|
head.quantity = 1;
|
|
head.state = listMessage[index]
|
|
["couponCondition"];
|
|
head.targetProduct =
|
|
coup["TargetProduct"];
|
|
head.type = coup["Type"];
|
|
head.upper = coup["UpperLimit"];
|
|
head.generated = DateTime.parse(
|
|
coup["Generated"].toString());
|
|
acceptCoupon(head);
|
|
}),
|
|
);
|
|
break;
|
|
case "cancellation":
|
|
return Padding(
|
|
padding: EdgeInsets.symmetric(vertical: 8.0),
|
|
child: Dismissible(
|
|
key: Key(listMessage[index].reference.id),
|
|
background: Container(
|
|
height: 100,
|
|
decoration: BoxDecoration(
|
|
gradient: LinearGradient(
|
|
begin: Alignment.topCenter,
|
|
end: Alignment.bottomCenter,
|
|
colors: [
|
|
darkAccent,
|
|
accentMain,
|
|
],
|
|
),
|
|
),
|
|
child: Center(
|
|
child: Text(
|
|
"Cleared!!!!",
|
|
style: TextStyle(
|
|
color: Colors.white,
|
|
fontSize: 25),
|
|
),
|
|
),
|
|
),
|
|
child: buildRedeemableAlert(
|
|
context: context,
|
|
timestamp: date,
|
|
message: listMessage[index]["message"],
|
|
thumbnail: listMessage[index]
|
|
["productImage"],
|
|
icons: iconIndicator(listMessage[index]
|
|
["notificationType"]),
|
|
),
|
|
onDismissed: (direction) {
|
|
FirebaseFirestore.instance
|
|
.runTransaction(
|
|
(transaction) async {
|
|
transaction.delete(
|
|
listMessage[index].reference);
|
|
});
|
|
}),
|
|
);
|
|
break;
|
|
case "refund":
|
|
return Padding(
|
|
padding: EdgeInsets.symmetric(vertical: 8.0),
|
|
child: Dismissible(
|
|
key: Key(listMessage[index].reference.id),
|
|
background: Container(
|
|
height: 100,
|
|
decoration: BoxDecoration(
|
|
gradient: LinearGradient(
|
|
begin: Alignment.topCenter,
|
|
end: Alignment.bottomCenter,
|
|
colors: [
|
|
darkAccent,
|
|
accentMain,
|
|
],
|
|
),
|
|
),
|
|
child: Center(
|
|
child: Text(
|
|
"Cleared!!!!",
|
|
style: TextStyle(
|
|
color: Colors.white,
|
|
fontSize: 25),
|
|
),
|
|
),
|
|
),
|
|
child: buildRefundAlert(
|
|
context: context,
|
|
timestamp: date,
|
|
message: listMessage[index]["message"],
|
|
icons: iconIndicator(listMessage[index]
|
|
["notificationType"]),
|
|
),
|
|
onDismissed: (direction) {
|
|
FirebaseFirestore.instance
|
|
.runTransaction(
|
|
(transaction) async {
|
|
transaction.delete(
|
|
listMessage[index].reference);
|
|
});
|
|
}),
|
|
);
|
|
break;
|
|
case "welcome":
|
|
return Padding(
|
|
padding: EdgeInsets.symmetric(vertical: 8.0),
|
|
child: Dismissible(
|
|
key: Key(listMessage[index].reference.id),
|
|
background: Container(
|
|
height: 100,
|
|
decoration: BoxDecoration(
|
|
gradient: LinearGradient(
|
|
begin: Alignment.topCenter,
|
|
end: Alignment.bottomCenter,
|
|
colors: [
|
|
darkAccent,
|
|
accentMain,
|
|
],
|
|
),
|
|
),
|
|
child: Center(
|
|
child: Text(
|
|
"Cleared!!!!",
|
|
style: TextStyle(
|
|
color: Colors.white,
|
|
fontSize: 25),
|
|
),
|
|
),
|
|
),
|
|
child: buildRefundAlert(
|
|
context: context,
|
|
timestamp: date,
|
|
message: listMessage[index]["message"],
|
|
icons: iconIndicator(listMessage[index]
|
|
["notificationType"]),
|
|
),
|
|
onDismissed: (direction) {
|
|
FirebaseFirestore.instance
|
|
.runTransaction(
|
|
(transaction) async {
|
|
transaction.delete(
|
|
listMessage[index].reference);
|
|
});
|
|
}),
|
|
);
|
|
break;
|
|
case "adStatus":
|
|
return Padding(
|
|
padding: EdgeInsets.symmetric(vertical: 8.0),
|
|
child: Dismissible(
|
|
key: Key(listMessage[index].reference.id),
|
|
background: Container(
|
|
height: 100,
|
|
decoration: BoxDecoration(
|
|
gradient: LinearGradient(
|
|
begin: Alignment.topCenter,
|
|
end: Alignment.bottomCenter,
|
|
colors: [
|
|
darkAccent,
|
|
accentMain,
|
|
],
|
|
),
|
|
),
|
|
child: Center(
|
|
child: Text(
|
|
"Cleared!!!!",
|
|
style: TextStyle(
|
|
color: Colors.white,
|
|
fontSize: 25),
|
|
),
|
|
),
|
|
),
|
|
child: buildPostAlert(
|
|
context: context,
|
|
timestamp: date,
|
|
message: listMessage[index]["message"],
|
|
thumbnail: listMessage[index]
|
|
["assetID"],
|
|
icons: iconIndicator(listMessage[index]
|
|
["notificationType"]),
|
|
),
|
|
onDismissed: (direction) {
|
|
FirebaseFirestore.instance
|
|
.runTransaction(
|
|
(transaction) async {
|
|
transaction.delete(
|
|
listMessage[index].reference);
|
|
});
|
|
}),
|
|
);
|
|
break;
|
|
case "desire":
|
|
return Padding(
|
|
padding: EdgeInsets.symmetric(vertical: 8.0),
|
|
child: Dismissible(
|
|
key: Key(listMessage[index]["couponID"]),
|
|
background: Container(
|
|
height: 100,
|
|
decoration: BoxDecoration(
|
|
gradient: LinearGradient(
|
|
begin: Alignment.topCenter,
|
|
end: Alignment.bottomCenter,
|
|
colors: [
|
|
darkAccent,
|
|
accentMain,
|
|
],
|
|
),
|
|
),
|
|
child: Center(
|
|
child: Text(
|
|
"Cleared!!!!",
|
|
style: TextStyle(
|
|
color: Colors.white,
|
|
fontSize: 25),
|
|
),
|
|
),
|
|
),
|
|
child: buildRedeemableAlert(
|
|
context: context,
|
|
timestamp: date,
|
|
message: listMessage[index]["message"],
|
|
thumbnail: listMessage[index]
|
|
["productImage"],
|
|
icons: iconIndicator(listMessage[index]
|
|
["notificationType"]),
|
|
),
|
|
onDismissed: (direction) {
|
|
FirebaseFirestore.instance
|
|
.runTransaction(
|
|
(transaction) async {
|
|
transaction.delete(
|
|
listMessage[index].reference);
|
|
});
|
|
}),
|
|
);
|
|
break;
|
|
default:
|
|
try {
|
|
return Padding(
|
|
padding:
|
|
EdgeInsets.symmetric(vertical: 8.0),
|
|
child: Dismissible(
|
|
key: Key(
|
|
listMessage[index]["relationID"]),
|
|
background: Container(
|
|
height: 100,
|
|
decoration: BoxDecoration(
|
|
gradient: LinearGradient(
|
|
begin: Alignment.topCenter,
|
|
end: Alignment.bottomCenter,
|
|
colors: [
|
|
darkAccent,
|
|
accentMain,
|
|
],
|
|
),
|
|
),
|
|
child: Center(
|
|
child: Text(
|
|
"Cleared!!!!",
|
|
style: TextStyle(
|
|
color: Colors.white,
|
|
fontSize: 25),
|
|
),
|
|
),
|
|
),
|
|
child: buildAlert(
|
|
context: context,
|
|
timestamp: date,
|
|
username: listMessage[index]
|
|
["initiatorUsername"],
|
|
description: listMessage[index]
|
|
["initiatorUsername"] +
|
|
setDescription(listMessage[index]
|
|
["notificationType"]),
|
|
thumbnail: listMessage[index]
|
|
["initiatorThumbnail"],
|
|
icons: iconIndicator(
|
|
listMessage[index]
|
|
["notificationType"]),
|
|
),
|
|
onDismissed: (direction) {
|
|
FirebaseFirestore.instance
|
|
.runTransaction(
|
|
(transaction) async {
|
|
transaction.delete(
|
|
listMessage[index].reference);
|
|
});
|
|
}),
|
|
);
|
|
} catch (e) {
|
|
print(e);
|
|
return Container();
|
|
}
|
|
break;
|
|
}
|
|
},
|
|
);
|
|
}
|
|
},
|
|
);
|
|
} else {
|
|
return Center(
|
|
child: CircularProgressIndicator(
|
|
valueColor: AlwaysStoppedAnimation<Color>(
|
|
Theme.of(context).primaryColor)));
|
|
}
|
|
},
|
|
)
|
|
: Container(
|
|
padding:
|
|
EdgeInsets.only(top: MediaQuery.of(context).size.width * 0.7),
|
|
height: MediaQuery.of(context).size.height,
|
|
width: MediaQuery.of(context).size.width,
|
|
child: Center(
|
|
child: Column(
|
|
children: [
|
|
CupertinoActivityIndicator(
|
|
animating: true,
|
|
radius: 15,
|
|
),
|
|
Text("Processing request....."),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|
|
|