fix notlification

This commit is contained in:
Yoshi 2023-07-08 21:21:57 +03:00
parent df89d6cdaf
commit 55dfc08d2a
4 changed files with 110 additions and 10 deletions

View file

@ -8,6 +8,7 @@ import 'package:rain/app/api/api.dart';
import 'package:rain/app/data/weather.dart'; import 'package:rain/app/data/weather.dart';
import 'package:rain/app/services/notification.dart'; import 'package:rain/app/services/notification.dart';
import 'package:rain/app/widgets/status.dart'; import 'package:rain/app/widgets/status.dart';
import 'package:rain/app/widgets/status_im_fa.dart';
import 'package:rain/main.dart'; import 'package:rain/main.dart';
import 'package:timezone/standalone.dart' as tz; import 'package:timezone/standalone.dart' as tz;
import 'package:lat_lng_to_timezone/lat_lng_to_timezone.dart' as tzmap; import 'package:lat_lng_to_timezone/lat_lng_to_timezone.dart' as tzmap;
@ -399,12 +400,15 @@ class LocationController extends GetxController {
} }
void notlification(MainWeatherCache mainWeatherCache) { void notlification(MainWeatherCache mainWeatherCache) {
for (var i = 0; i < mainWeatherCache.time!.length; i++) { final weatherNotlification = mainWeatherCache.time
?.where((element) => DateTime.parse(element).isAfter(DateTime.now()))
.toList();
for (var i = 0; i < weatherNotlification!.length; i++) {
if (DateTime.parse(mainWeatherCache.time![i]).isAfter(DateTime.now())) { if (DateTime.parse(mainWeatherCache.time![i]).isAfter(DateTime.now())) {
NotificationShow().showNotification( NotificationShow().showNotification(
UniqueKey().hashCode, UniqueKey().hashCode,
'$city: ${mainWeatherCache.temperature2M}°', '$city: ${mainWeatherCache.temperature2M![i]}°',
Status().getText(mainWeatherCache.weathercode![i]), '${Status().getText(mainWeatherCache.weathercode![i])} · ${StatusImFa().getTimeFormat(mainWeatherCache.time![i])}',
DateTime.parse(mainWeatherCache.time![i]), DateTime.parse(mainWeatherCache.time![i]),
); );
} }

View file

@ -9,6 +9,7 @@ class Settings {
bool? theme; bool? theme;
bool location = false; bool location = false;
bool notifications = false; bool notifications = false;
int timeRange = 1;
bool materialColor = false; bool materialColor = false;
bool amoledTheme = false; bool amoledTheme = false;
String measurements = 'metric'; String measurements = 'metric';

View file

@ -62,8 +62,13 @@ const SettingsSchema = CollectionSchema(
name: r'theme', name: r'theme',
type: IsarType.bool, type: IsarType.bool,
), ),
r'timeformat': PropertySchema( r'timeRange': PropertySchema(
id: 9, id: 9,
name: r'timeRange',
type: IsarType.long,
),
r'timeformat': PropertySchema(
id: 10,
name: r'timeformat', name: r'timeformat',
type: IsarType.string, type: IsarType.string,
) )
@ -115,7 +120,8 @@ void _settingsSerialize(
writer.writeBool(offsets[6], object.notifications); writer.writeBool(offsets[6], object.notifications);
writer.writeBool(offsets[7], object.onboard); writer.writeBool(offsets[7], object.onboard);
writer.writeBool(offsets[8], object.theme); writer.writeBool(offsets[8], object.theme);
writer.writeString(offsets[9], object.timeformat); writer.writeLong(offsets[9], object.timeRange);
writer.writeString(offsets[10], object.timeformat);
} }
Settings _settingsDeserialize( Settings _settingsDeserialize(
@ -135,7 +141,8 @@ Settings _settingsDeserialize(
object.notifications = reader.readBool(offsets[6]); object.notifications = reader.readBool(offsets[6]);
object.onboard = reader.readBool(offsets[7]); object.onboard = reader.readBool(offsets[7]);
object.theme = reader.readBoolOrNull(offsets[8]); object.theme = reader.readBoolOrNull(offsets[8]);
object.timeformat = reader.readString(offsets[9]); object.timeRange = reader.readLong(offsets[9]);
object.timeformat = reader.readString(offsets[10]);
return object; return object;
} }
@ -165,6 +172,8 @@ P _settingsDeserializeProp<P>(
case 8: case 8:
return (reader.readBoolOrNull(offset)) as P; return (reader.readBoolOrNull(offset)) as P;
case 9: case 9:
return (reader.readLong(offset)) as P;
case 10:
return (reader.readString(offset)) as P; return (reader.readString(offset)) as P;
default: default:
throw IsarError('Unknown property with id $propertyId'); throw IsarError('Unknown property with id $propertyId');
@ -798,6 +807,59 @@ extension SettingsQueryFilter
}); });
} }
QueryBuilder<Settings, Settings, QAfterFilterCondition> timeRangeEqualTo(
int value) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo(
property: r'timeRange',
value: value,
));
});
}
QueryBuilder<Settings, Settings, QAfterFilterCondition> timeRangeGreaterThan(
int value, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan(
include: include,
property: r'timeRange',
value: value,
));
});
}
QueryBuilder<Settings, Settings, QAfterFilterCondition> timeRangeLessThan(
int value, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.lessThan(
include: include,
property: r'timeRange',
value: value,
));
});
}
QueryBuilder<Settings, Settings, QAfterFilterCondition> timeRangeBetween(
int lower,
int upper, {
bool includeLower = true,
bool includeUpper = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.between(
property: r'timeRange',
lower: lower,
includeLower: includeLower,
upper: upper,
includeUpper: includeUpper,
));
});
}
QueryBuilder<Settings, Settings, QAfterFilterCondition> timeformatEqualTo( QueryBuilder<Settings, Settings, QAfterFilterCondition> timeformatEqualTo(
String value, { String value, {
bool caseSensitive = true, bool caseSensitive = true,
@ -1045,6 +1107,18 @@ extension SettingsQuerySortBy on QueryBuilder<Settings, Settings, QSortBy> {
}); });
} }
QueryBuilder<Settings, Settings, QAfterSortBy> sortByTimeRange() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'timeRange', Sort.asc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> sortByTimeRangeDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'timeRange', Sort.desc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> sortByTimeformat() { QueryBuilder<Settings, Settings, QAfterSortBy> sortByTimeformat() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'timeformat', Sort.asc); return query.addSortBy(r'timeformat', Sort.asc);
@ -1180,6 +1254,18 @@ extension SettingsQuerySortThenBy
}); });
} }
QueryBuilder<Settings, Settings, QAfterSortBy> thenByTimeRange() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'timeRange', Sort.asc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> thenByTimeRangeDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'timeRange', Sort.desc);
});
}
QueryBuilder<Settings, Settings, QAfterSortBy> thenByTimeformat() { QueryBuilder<Settings, Settings, QAfterSortBy> thenByTimeformat() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'timeformat', Sort.asc); return query.addSortBy(r'timeformat', Sort.asc);
@ -1252,6 +1338,12 @@ extension SettingsQueryWhereDistinct
}); });
} }
QueryBuilder<Settings, Settings, QDistinct> distinctByTimeRange() {
return QueryBuilder.apply(this, (query) {
return query.addDistinctBy(r'timeRange');
});
}
QueryBuilder<Settings, Settings, QDistinct> distinctByTimeformat( QueryBuilder<Settings, Settings, QDistinct> distinctByTimeformat(
{bool caseSensitive = true}) { {bool caseSensitive = true}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
@ -1322,6 +1414,12 @@ extension SettingsQueryProperty
}); });
} }
QueryBuilder<Settings, int, QQueryOperations> timeRangeProperty() {
return QueryBuilder.apply(this, (query) {
return query.addPropertyName(r'timeRange');
});
}
QueryBuilder<Settings, String, QQueryOperations> timeformatProperty() { QueryBuilder<Settings, String, QQueryOperations> timeformatProperty() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addPropertyName(r'timeformat'); return query.addPropertyName(r'timeformat');

View file

@ -25,12 +25,9 @@ class _WeatherPageState extends State<WeatherPage> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return RefreshIndicator( return RefreshIndicator(
onRefresh: () async { onRefresh: () async {
await flutterLocalNotificationsPlugin.cancelAll();
await locationController.deleteAll(false); await locationController.deleteAll(false);
await locationController.setLocation(); await locationController.setLocation();
await flutterLocalNotificationsPlugin.cancelAll();
if (settings.notifications) {
locationController.notlification(locationController.mainWeather);
}
setState(() {}); setState(() {});
}, },
child: SafeArea( child: SafeArea(