diff --git a/lib/misskey_dart.dart b/lib/misskey_dart.dart index 7597808c..38a5f663 100644 --- a/lib/misskey_dart.dart +++ b/lib/misskey_dart.dart @@ -17,6 +17,8 @@ export 'src/enums/reaction_acceptance.dart'; export 'src/enums/streaming_request_type.dart'; export 'src/enums/users_sort_type.dart'; export 'src/enums/users_state.dart'; +export 'src/enums/announcement_display_type.dart'; +export 'src/enums/announcement_icon_type.dart'; export 'src/data/antennas/antennas_create_request.dart'; export 'src/data/antennas/antennas_delete_request.dart'; export 'src/data/antennas/antennas_notes_request.dart'; @@ -86,6 +88,7 @@ export 'src/data/i/i_notifications_response.dart'; export 'src/data/i/i_favorites_request.dart'; export 'src/data/i/i_favorites_response.dart'; export 'src/data/i/i_update_request.dart'; +export 'src/data/i/i_read_announcement_request.dart'; export 'src/data/notes/notes_clips_request.dart'; export 'src/data/notes/notes_timeline_request.dart'; export 'src/data/notes/notes_create_request.dart'; diff --git a/lib/src/data/announcements_request.dart b/lib/src/data/announcements_request.dart index eec7cd17..5fc430d5 100644 --- a/lib/src/data/announcements_request.dart +++ b/lib/src/data/announcements_request.dart @@ -1,4 +1,3 @@ - import 'package:freezed_annotation/freezed_annotation.dart'; part 'announcements_request.freezed.dart'; @@ -8,11 +7,12 @@ part 'announcements_request.g.dart'; class AnnouncementsRequest with _$AnnouncementsRequest { const factory AnnouncementsRequest({ int? limit, - bool? withUnreads, + @Deprecated("removed in Misskey 2023.9") bool? withUnreads, + bool? isActive, String? sinceId, String? untilId, }) = _AnnouncementsRequest; - factory AnnouncementsRequest.fromJson(Map json) - => _$AnnouncementsRequestFromJson(json); -} \ No newline at end of file + factory AnnouncementsRequest.fromJson(Map json) => + _$AnnouncementsRequestFromJson(json); +} diff --git a/lib/src/data/announcements_request.freezed.dart b/lib/src/data/announcements_request.freezed.dart index f51297a5..6e36d1ac 100644 --- a/lib/src/data/announcements_request.freezed.dart +++ b/lib/src/data/announcements_request.freezed.dart @@ -21,7 +21,9 @@ AnnouncementsRequest _$AnnouncementsRequestFromJson(Map json) { /// @nodoc mixin _$AnnouncementsRequest { int? get limit => throw _privateConstructorUsedError; + @Deprecated("removed in Misskey 2023.9") bool? get withUnreads => throw _privateConstructorUsedError; + bool? get isActive => throw _privateConstructorUsedError; String? get sinceId => throw _privateConstructorUsedError; String? get untilId => throw _privateConstructorUsedError; @@ -37,7 +39,12 @@ abstract class $AnnouncementsRequestCopyWith<$Res> { $Res Function(AnnouncementsRequest) then) = _$AnnouncementsRequestCopyWithImpl<$Res, AnnouncementsRequest>; @useResult - $Res call({int? limit, bool? withUnreads, String? sinceId, String? untilId}); + $Res call( + {int? limit, + @Deprecated("removed in Misskey 2023.9") bool? withUnreads, + bool? isActive, + String? sinceId, + String? untilId}); } /// @nodoc @@ -56,6 +63,7 @@ class _$AnnouncementsRequestCopyWithImpl<$Res, $Res call({ Object? limit = freezed, Object? withUnreads = freezed, + Object? isActive = freezed, Object? sinceId = freezed, Object? untilId = freezed, }) { @@ -68,6 +76,10 @@ class _$AnnouncementsRequestCopyWithImpl<$Res, ? _value.withUnreads : withUnreads // ignore: cast_nullable_to_non_nullable as bool?, + isActive: freezed == isActive + ? _value.isActive + : isActive // ignore: cast_nullable_to_non_nullable + as bool?, sinceId: freezed == sinceId ? _value.sinceId : sinceId // ignore: cast_nullable_to_non_nullable @@ -88,7 +100,12 @@ abstract class _$$_AnnouncementsRequestCopyWith<$Res> __$$_AnnouncementsRequestCopyWithImpl<$Res>; @override @useResult - $Res call({int? limit, bool? withUnreads, String? sinceId, String? untilId}); + $Res call( + {int? limit, + @Deprecated("removed in Misskey 2023.9") bool? withUnreads, + bool? isActive, + String? sinceId, + String? untilId}); } /// @nodoc @@ -104,6 +121,7 @@ class __$$_AnnouncementsRequestCopyWithImpl<$Res> $Res call({ Object? limit = freezed, Object? withUnreads = freezed, + Object? isActive = freezed, Object? sinceId = freezed, Object? untilId = freezed, }) { @@ -116,6 +134,10 @@ class __$$_AnnouncementsRequestCopyWithImpl<$Res> ? _value.withUnreads : withUnreads // ignore: cast_nullable_to_non_nullable as bool?, + isActive: freezed == isActive + ? _value.isActive + : isActive // ignore: cast_nullable_to_non_nullable + as bool?, sinceId: freezed == sinceId ? _value.sinceId : sinceId // ignore: cast_nullable_to_non_nullable @@ -132,7 +154,11 @@ class __$$_AnnouncementsRequestCopyWithImpl<$Res> @JsonSerializable() class _$_AnnouncementsRequest implements _AnnouncementsRequest { const _$_AnnouncementsRequest( - {this.limit, this.withUnreads, this.sinceId, this.untilId}); + {this.limit, + @Deprecated("removed in Misskey 2023.9") this.withUnreads, + this.isActive, + this.sinceId, + this.untilId}); factory _$_AnnouncementsRequest.fromJson(Map json) => _$$_AnnouncementsRequestFromJson(json); @@ -140,15 +166,18 @@ class _$_AnnouncementsRequest implements _AnnouncementsRequest { @override final int? limit; @override + @Deprecated("removed in Misskey 2023.9") final bool? withUnreads; @override + final bool? isActive; + @override final String? sinceId; @override final String? untilId; @override String toString() { - return 'AnnouncementsRequest(limit: $limit, withUnreads: $withUnreads, sinceId: $sinceId, untilId: $untilId)'; + return 'AnnouncementsRequest(limit: $limit, withUnreads: $withUnreads, isActive: $isActive, sinceId: $sinceId, untilId: $untilId)'; } @override @@ -159,6 +188,8 @@ class _$_AnnouncementsRequest implements _AnnouncementsRequest { (identical(other.limit, limit) || other.limit == limit) && (identical(other.withUnreads, withUnreads) || other.withUnreads == withUnreads) && + (identical(other.isActive, isActive) || + other.isActive == isActive) && (identical(other.sinceId, sinceId) || other.sinceId == sinceId) && (identical(other.untilId, untilId) || other.untilId == untilId)); } @@ -166,7 +197,7 @@ class _$_AnnouncementsRequest implements _AnnouncementsRequest { @JsonKey(ignore: true) @override int get hashCode => - Object.hash(runtimeType, limit, withUnreads, sinceId, untilId); + Object.hash(runtimeType, limit, withUnreads, isActive, sinceId, untilId); @JsonKey(ignore: true) @override @@ -186,7 +217,8 @@ class _$_AnnouncementsRequest implements _AnnouncementsRequest { abstract class _AnnouncementsRequest implements AnnouncementsRequest { const factory _AnnouncementsRequest( {final int? limit, - final bool? withUnreads, + @Deprecated("removed in Misskey 2023.9") final bool? withUnreads, + final bool? isActive, final String? sinceId, final String? untilId}) = _$_AnnouncementsRequest; @@ -196,8 +228,11 @@ abstract class _AnnouncementsRequest implements AnnouncementsRequest { @override int? get limit; @override + @Deprecated("removed in Misskey 2023.9") bool? get withUnreads; @override + bool? get isActive; + @override String? get sinceId; @override String? get untilId; diff --git a/lib/src/data/announcements_request.g.dart b/lib/src/data/announcements_request.g.dart index 3c6b90ac..b1137e97 100644 --- a/lib/src/data/announcements_request.g.dart +++ b/lib/src/data/announcements_request.g.dart @@ -11,6 +11,7 @@ _$_AnnouncementsRequest _$$_AnnouncementsRequestFromJson( _$_AnnouncementsRequest( limit: json['limit'] as int?, withUnreads: json['withUnreads'] as bool?, + isActive: json['isActive'] as bool?, sinceId: json['sinceId'] as String?, untilId: json['untilId'] as String?, ); @@ -20,6 +21,7 @@ Map _$$_AnnouncementsRequestToJson( { 'limit': instance.limit, 'withUnreads': instance.withUnreads, + 'isActive': instance.isActive, 'sinceId': instance.sinceId, 'untilId': instance.untilId, }; diff --git a/lib/src/data/announcements_response.dart b/lib/src/data/announcements_response.dart index 9ca57acd..d2f7f0ec 100644 --- a/lib/src/data/announcements_response.dart +++ b/lib/src/data/announcements_response.dart @@ -1,7 +1,8 @@ - import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:misskey_dart/src/converters/date_time_converter.dart'; import 'package:misskey_dart/src/converters/uri_converter.dart'; +import 'package:misskey_dart/src/enums/announcement_display_type.dart'; +import 'package:misskey_dart/src/enums/announcement_icon_type.dart'; part 'announcements_response.freezed.dart'; part 'announcements_response.g.dart'; @@ -10,18 +11,20 @@ part 'announcements_response.g.dart'; class AnnouncementsResponse with _$AnnouncementsResponse { const factory AnnouncementsResponse({ required String id, - @DateTimeConverter() - required DateTime createdAt, - @NullableDateTimeConverter() - DateTime? updatedAt, + @DateTimeConverter() required DateTime createdAt, + @NullableDateTimeConverter() DateTime? updatedAt, required String text, required String title, - @UriConverter() - Uri? imageUrl, + @UriConverter() Uri? imageUrl, + AnnouncementIconType? icon, + AnnouncementDisplayType? display, + bool? needConfirmationToRead, + bool? forYou, bool? isRead, - + @Default(false) bool forExistingUsers, + String? userId, }) = _AnnouncementsResponse; - factory AnnouncementsResponse.fromJson(Map json) - => _$AnnouncementsResponseFromJson(json); -} \ No newline at end of file + factory AnnouncementsResponse.fromJson(Map json) => + _$AnnouncementsResponseFromJson(json); +} diff --git a/lib/src/data/announcements_response.freezed.dart b/lib/src/data/announcements_response.freezed.dart index a512ff1a..a28af6c5 100644 --- a/lib/src/data/announcements_response.freezed.dart +++ b/lib/src/data/announcements_response.freezed.dart @@ -30,7 +30,13 @@ mixin _$AnnouncementsResponse { String get title => throw _privateConstructorUsedError; @UriConverter() Uri? get imageUrl => throw _privateConstructorUsedError; + AnnouncementIconType? get icon => throw _privateConstructorUsedError; + AnnouncementDisplayType? get display => throw _privateConstructorUsedError; + bool? get needConfirmationToRead => throw _privateConstructorUsedError; + bool? get forYou => throw _privateConstructorUsedError; bool? get isRead => throw _privateConstructorUsedError; + bool get forExistingUsers => throw _privateConstructorUsedError; + String? get userId => throw _privateConstructorUsedError; Map toJson() => throw _privateConstructorUsedError; @JsonKey(ignore: true) @@ -51,7 +57,13 @@ abstract class $AnnouncementsResponseCopyWith<$Res> { String text, String title, @UriConverter() Uri? imageUrl, - bool? isRead}); + AnnouncementIconType? icon, + AnnouncementDisplayType? display, + bool? needConfirmationToRead, + bool? forYou, + bool? isRead, + bool forExistingUsers, + String? userId}); } /// @nodoc @@ -74,7 +86,13 @@ class _$AnnouncementsResponseCopyWithImpl<$Res, Object? text = null, Object? title = null, Object? imageUrl = freezed, + Object? icon = freezed, + Object? display = freezed, + Object? needConfirmationToRead = freezed, + Object? forYou = freezed, Object? isRead = freezed, + Object? forExistingUsers = null, + Object? userId = freezed, }) { return _then(_value.copyWith( id: null == id @@ -101,10 +119,34 @@ class _$AnnouncementsResponseCopyWithImpl<$Res, ? _value.imageUrl : imageUrl // ignore: cast_nullable_to_non_nullable as Uri?, + icon: freezed == icon + ? _value.icon + : icon // ignore: cast_nullable_to_non_nullable + as AnnouncementIconType?, + display: freezed == display + ? _value.display + : display // ignore: cast_nullable_to_non_nullable + as AnnouncementDisplayType?, + needConfirmationToRead: freezed == needConfirmationToRead + ? _value.needConfirmationToRead + : needConfirmationToRead // ignore: cast_nullable_to_non_nullable + as bool?, + forYou: freezed == forYou + ? _value.forYou + : forYou // ignore: cast_nullable_to_non_nullable + as bool?, isRead: freezed == isRead ? _value.isRead : isRead // ignore: cast_nullable_to_non_nullable as bool?, + forExistingUsers: null == forExistingUsers + ? _value.forExistingUsers + : forExistingUsers // ignore: cast_nullable_to_non_nullable + as bool, + userId: freezed == userId + ? _value.userId + : userId // ignore: cast_nullable_to_non_nullable + as String?, ) as $Val); } } @@ -124,7 +166,13 @@ abstract class _$$_AnnouncementsResponseCopyWith<$Res> String text, String title, @UriConverter() Uri? imageUrl, - bool? isRead}); + AnnouncementIconType? icon, + AnnouncementDisplayType? display, + bool? needConfirmationToRead, + bool? forYou, + bool? isRead, + bool forExistingUsers, + String? userId}); } /// @nodoc @@ -144,7 +192,13 @@ class __$$_AnnouncementsResponseCopyWithImpl<$Res> Object? text = null, Object? title = null, Object? imageUrl = freezed, + Object? icon = freezed, + Object? display = freezed, + Object? needConfirmationToRead = freezed, + Object? forYou = freezed, Object? isRead = freezed, + Object? forExistingUsers = null, + Object? userId = freezed, }) { return _then(_$_AnnouncementsResponse( id: null == id @@ -171,10 +225,34 @@ class __$$_AnnouncementsResponseCopyWithImpl<$Res> ? _value.imageUrl : imageUrl // ignore: cast_nullable_to_non_nullable as Uri?, + icon: freezed == icon + ? _value.icon + : icon // ignore: cast_nullable_to_non_nullable + as AnnouncementIconType?, + display: freezed == display + ? _value.display + : display // ignore: cast_nullable_to_non_nullable + as AnnouncementDisplayType?, + needConfirmationToRead: freezed == needConfirmationToRead + ? _value.needConfirmationToRead + : needConfirmationToRead // ignore: cast_nullable_to_non_nullable + as bool?, + forYou: freezed == forYou + ? _value.forYou + : forYou // ignore: cast_nullable_to_non_nullable + as bool?, isRead: freezed == isRead ? _value.isRead : isRead // ignore: cast_nullable_to_non_nullable as bool?, + forExistingUsers: null == forExistingUsers + ? _value.forExistingUsers + : forExistingUsers // ignore: cast_nullable_to_non_nullable + as bool, + userId: freezed == userId + ? _value.userId + : userId // ignore: cast_nullable_to_non_nullable + as String?, )); } } @@ -189,7 +267,13 @@ class _$_AnnouncementsResponse implements _AnnouncementsResponse { required this.text, required this.title, @UriConverter() this.imageUrl, - this.isRead}); + this.icon, + this.display, + this.needConfirmationToRead, + this.forYou, + this.isRead, + this.forExistingUsers = false, + this.userId}); factory _$_AnnouncementsResponse.fromJson(Map json) => _$$_AnnouncementsResponseFromJson(json); @@ -210,11 +294,24 @@ class _$_AnnouncementsResponse implements _AnnouncementsResponse { @UriConverter() final Uri? imageUrl; @override + final AnnouncementIconType? icon; + @override + final AnnouncementDisplayType? display; + @override + final bool? needConfirmationToRead; + @override + final bool? forYou; + @override final bool? isRead; + @override + @JsonKey() + final bool forExistingUsers; + @override + final String? userId; @override String toString() { - return 'AnnouncementsResponse(id: $id, createdAt: $createdAt, updatedAt: $updatedAt, text: $text, title: $title, imageUrl: $imageUrl, isRead: $isRead)'; + return 'AnnouncementsResponse(id: $id, createdAt: $createdAt, updatedAt: $updatedAt, text: $text, title: $title, imageUrl: $imageUrl, icon: $icon, display: $display, needConfirmationToRead: $needConfirmationToRead, forYou: $forYou, isRead: $isRead, forExistingUsers: $forExistingUsers, userId: $userId)'; } @override @@ -231,13 +328,34 @@ class _$_AnnouncementsResponse implements _AnnouncementsResponse { (identical(other.title, title) || other.title == title) && (identical(other.imageUrl, imageUrl) || other.imageUrl == imageUrl) && - (identical(other.isRead, isRead) || other.isRead == isRead)); + (identical(other.icon, icon) || other.icon == icon) && + (identical(other.display, display) || other.display == display) && + (identical(other.needConfirmationToRead, needConfirmationToRead) || + other.needConfirmationToRead == needConfirmationToRead) && + (identical(other.forYou, forYou) || other.forYou == forYou) && + (identical(other.isRead, isRead) || other.isRead == isRead) && + (identical(other.forExistingUsers, forExistingUsers) || + other.forExistingUsers == forExistingUsers) && + (identical(other.userId, userId) || other.userId == userId)); } @JsonKey(ignore: true) @override int get hashCode => Object.hash( - runtimeType, id, createdAt, updatedAt, text, title, imageUrl, isRead); + runtimeType, + id, + createdAt, + updatedAt, + text, + title, + imageUrl, + icon, + display, + needConfirmationToRead, + forYou, + isRead, + forExistingUsers, + userId); @JsonKey(ignore: true) @override @@ -262,7 +380,13 @@ abstract class _AnnouncementsResponse implements AnnouncementsResponse { required final String text, required final String title, @UriConverter() final Uri? imageUrl, - final bool? isRead}) = _$_AnnouncementsResponse; + final AnnouncementIconType? icon, + final AnnouncementDisplayType? display, + final bool? needConfirmationToRead, + final bool? forYou, + final bool? isRead, + final bool forExistingUsers, + final String? userId}) = _$_AnnouncementsResponse; factory _AnnouncementsResponse.fromJson(Map json) = _$_AnnouncementsResponse.fromJson; @@ -283,8 +407,20 @@ abstract class _AnnouncementsResponse implements AnnouncementsResponse { @UriConverter() Uri? get imageUrl; @override + AnnouncementIconType? get icon; + @override + AnnouncementDisplayType? get display; + @override + bool? get needConfirmationToRead; + @override + bool? get forYou; + @override bool? get isRead; @override + bool get forExistingUsers; + @override + String? get userId; + @override @JsonKey(ignore: true) _$$_AnnouncementsResponseCopyWith<_$_AnnouncementsResponse> get copyWith => throw _privateConstructorUsedError; diff --git a/lib/src/data/announcements_response.g.dart b/lib/src/data/announcements_response.g.dart index 16d0b6dc..765122dd 100644 --- a/lib/src/data/announcements_response.g.dart +++ b/lib/src/data/announcements_response.g.dart @@ -18,7 +18,14 @@ _$_AnnouncementsResponse _$$_AnnouncementsResponseFromJson( title: json['title'] as String, imageUrl: _$JsonConverterFromJson( json['imageUrl'], const UriConverter().fromJson), + icon: $enumDecodeNullable(_$AnnouncementIconTypeEnumMap, json['icon']), + display: $enumDecodeNullable( + _$AnnouncementDisplayTypeEnumMap, json['display']), + needConfirmationToRead: json['needConfirmationToRead'] as bool?, + forYou: json['forYou'] as bool?, isRead: json['isRead'] as bool?, + forExistingUsers: json['forExistingUsers'] as bool? ?? false, + userId: json['userId'] as String?, ); Map _$$_AnnouncementsResponseToJson( @@ -31,7 +38,13 @@ Map _$$_AnnouncementsResponseToJson( 'title': instance.title, 'imageUrl': _$JsonConverterToJson( instance.imageUrl, const UriConverter().toJson), + 'icon': _$AnnouncementIconTypeEnumMap[instance.icon], + 'display': _$AnnouncementDisplayTypeEnumMap[instance.display], + 'needConfirmationToRead': instance.needConfirmationToRead, + 'forYou': instance.forYou, 'isRead': instance.isRead, + 'forExistingUsers': instance.forExistingUsers, + 'userId': instance.userId, }; Value? _$JsonConverterFromJson( @@ -40,6 +53,19 @@ Value? _$JsonConverterFromJson( ) => json == null ? null : fromJson(json as Json); +const _$AnnouncementIconTypeEnumMap = { + AnnouncementIconType.info: 'info', + AnnouncementIconType.error: 'error', + AnnouncementIconType.warning: 'warning', + AnnouncementIconType.success: 'success', +}; + +const _$AnnouncementDisplayTypeEnumMap = { + AnnouncementDisplayType.banner: 'banner', + AnnouncementDisplayType.dialog: 'dialog', + AnnouncementDisplayType.normal: 'normal', +}; + Json? _$JsonConverterToJson( Value? value, Json? Function(Value value) toJson, diff --git a/lib/src/data/i/i_read_announcement_request.dart b/lib/src/data/i/i_read_announcement_request.dart new file mode 100644 index 00000000..bb4ab59f --- /dev/null +++ b/lib/src/data/i/i_read_announcement_request.dart @@ -0,0 +1,14 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'i_read_announcement_request.freezed.dart'; +part 'i_read_announcement_request.g.dart'; + +@freezed +class IReadAnnouncementRequest with _$IReadAnnouncementRequest { + const factory IReadAnnouncementRequest({ + required String announcementId, + }) = _IReadAnnouncementRequest; + + factory IReadAnnouncementRequest.fromJson(Map json) => + _$IReadAnnouncementRequestFromJson(json); +} diff --git a/lib/src/data/i/i_read_announcement_request.freezed.dart b/lib/src/data/i/i_read_announcement_request.freezed.dart new file mode 100644 index 00000000..6cdab7a5 --- /dev/null +++ b/lib/src/data/i/i_read_announcement_request.freezed.dart @@ -0,0 +1,158 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'i_read_announcement_request.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#custom-getters-and-methods'); + +IReadAnnouncementRequest _$IReadAnnouncementRequestFromJson( + Map json) { + return _IReadAnnouncementRequest.fromJson(json); +} + +/// @nodoc +mixin _$IReadAnnouncementRequest { + String get announcementId => throw _privateConstructorUsedError; + + Map toJson() => throw _privateConstructorUsedError; + @JsonKey(ignore: true) + $IReadAnnouncementRequestCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $IReadAnnouncementRequestCopyWith<$Res> { + factory $IReadAnnouncementRequestCopyWith(IReadAnnouncementRequest value, + $Res Function(IReadAnnouncementRequest) then) = + _$IReadAnnouncementRequestCopyWithImpl<$Res, IReadAnnouncementRequest>; + @useResult + $Res call({String announcementId}); +} + +/// @nodoc +class _$IReadAnnouncementRequestCopyWithImpl<$Res, + $Val extends IReadAnnouncementRequest> + implements $IReadAnnouncementRequestCopyWith<$Res> { + _$IReadAnnouncementRequestCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? announcementId = null, + }) { + return _then(_value.copyWith( + announcementId: null == announcementId + ? _value.announcementId + : announcementId // ignore: cast_nullable_to_non_nullable + as String, + ) as $Val); + } +} + +/// @nodoc +abstract class _$$_IReadAnnouncementRequestCopyWith<$Res> + implements $IReadAnnouncementRequestCopyWith<$Res> { + factory _$$_IReadAnnouncementRequestCopyWith( + _$_IReadAnnouncementRequest value, + $Res Function(_$_IReadAnnouncementRequest) then) = + __$$_IReadAnnouncementRequestCopyWithImpl<$Res>; + @override + @useResult + $Res call({String announcementId}); +} + +/// @nodoc +class __$$_IReadAnnouncementRequestCopyWithImpl<$Res> + extends _$IReadAnnouncementRequestCopyWithImpl<$Res, + _$_IReadAnnouncementRequest> + implements _$$_IReadAnnouncementRequestCopyWith<$Res> { + __$$_IReadAnnouncementRequestCopyWithImpl(_$_IReadAnnouncementRequest _value, + $Res Function(_$_IReadAnnouncementRequest) _then) + : super(_value, _then); + + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? announcementId = null, + }) { + return _then(_$_IReadAnnouncementRequest( + announcementId: null == announcementId + ? _value.announcementId + : announcementId // ignore: cast_nullable_to_non_nullable + as String, + )); + } +} + +/// @nodoc +@JsonSerializable() +class _$_IReadAnnouncementRequest implements _IReadAnnouncementRequest { + const _$_IReadAnnouncementRequest({required this.announcementId}); + + factory _$_IReadAnnouncementRequest.fromJson(Map json) => + _$$_IReadAnnouncementRequestFromJson(json); + + @override + final String announcementId; + + @override + String toString() { + return 'IReadAnnouncementRequest(announcementId: $announcementId)'; + } + + @override + bool operator ==(dynamic other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$_IReadAnnouncementRequest && + (identical(other.announcementId, announcementId) || + other.announcementId == announcementId)); + } + + @JsonKey(ignore: true) + @override + int get hashCode => Object.hash(runtimeType, announcementId); + + @JsonKey(ignore: true) + @override + @pragma('vm:prefer-inline') + _$$_IReadAnnouncementRequestCopyWith<_$_IReadAnnouncementRequest> + get copyWith => __$$_IReadAnnouncementRequestCopyWithImpl< + _$_IReadAnnouncementRequest>(this, _$identity); + + @override + Map toJson() { + return _$$_IReadAnnouncementRequestToJson( + this, + ); + } +} + +abstract class _IReadAnnouncementRequest implements IReadAnnouncementRequest { + const factory _IReadAnnouncementRequest( + {required final String announcementId}) = _$_IReadAnnouncementRequest; + + factory _IReadAnnouncementRequest.fromJson(Map json) = + _$_IReadAnnouncementRequest.fromJson; + + @override + String get announcementId; + @override + @JsonKey(ignore: true) + _$$_IReadAnnouncementRequestCopyWith<_$_IReadAnnouncementRequest> + get copyWith => throw _privateConstructorUsedError; +} diff --git a/lib/src/data/i/i_read_announcement_request.g.dart b/lib/src/data/i/i_read_announcement_request.g.dart new file mode 100644 index 00000000..b79a3e12 --- /dev/null +++ b/lib/src/data/i/i_read_announcement_request.g.dart @@ -0,0 +1,19 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'i_read_announcement_request.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +_$_IReadAnnouncementRequest _$$_IReadAnnouncementRequestFromJson( + Map json) => + _$_IReadAnnouncementRequest( + announcementId: json['announcementId'] as String, + ); + +Map _$$_IReadAnnouncementRequestToJson( + _$_IReadAnnouncementRequest instance) => + { + 'announcementId': instance.announcementId, + }; diff --git a/lib/src/data/i_response.dart b/lib/src/data/i_response.dart index bb110b5f..cdb14866 100644 --- a/lib/src/data/i_response.dart +++ b/lib/src/data/i_response.dart @@ -68,6 +68,7 @@ class IResponse with _$IResponse { required bool hasUnreadChannel, required bool hasUnreadNotification, required bool hasPendingReceivedFollowRequest, + @Default([]) List unreadAnnouncements, @MuteWordsConverter() required List mutedWords, required List mutedInstances, required List mutingNotificationTypes, diff --git a/lib/src/data/i_response.freezed.dart b/lib/src/data/i_response.freezed.dart index f1842ae8..f2bc730b 100644 --- a/lib/src/data/i_response.freezed.dart +++ b/lib/src/data/i_response.freezed.dart @@ -87,6 +87,8 @@ mixin _$IResponse { bool get hasUnreadNotification => throw _privateConstructorUsedError; bool get hasPendingReceivedFollowRequest => throw _privateConstructorUsedError; + List get unreadAnnouncements => + throw _privateConstructorUsedError; @MuteWordsConverter() List get mutedWords => throw _privateConstructorUsedError; List get mutedInstances => throw _privateConstructorUsedError; @@ -168,6 +170,7 @@ abstract class $IResponseCopyWith<$Res> { bool hasUnreadChannel, bool hasUnreadNotification, bool hasPendingReceivedFollowRequest, + List unreadAnnouncements, @MuteWordsConverter() List mutedWords, List mutedInstances, List mutingNotificationTypes, @@ -250,6 +253,7 @@ class _$IResponseCopyWithImpl<$Res, $Val extends IResponse> Object? hasUnreadChannel = null, Object? hasUnreadNotification = null, Object? hasPendingReceivedFollowRequest = null, + Object? unreadAnnouncements = null, Object? mutedWords = null, Object? mutedInstances = null, Object? mutingNotificationTypes = null, @@ -491,6 +495,10 @@ class _$IResponseCopyWithImpl<$Res, $Val extends IResponse> ? _value.hasPendingReceivedFollowRequest : hasPendingReceivedFollowRequest // ignore: cast_nullable_to_non_nullable as bool, + unreadAnnouncements: null == unreadAnnouncements + ? _value.unreadAnnouncements + : unreadAnnouncements // ignore: cast_nullable_to_non_nullable + as List, mutedWords: null == mutedWords ? _value.mutedWords : mutedWords // ignore: cast_nullable_to_non_nullable @@ -597,6 +605,7 @@ abstract class _$$_IResponseCopyWith<$Res> implements $IResponseCopyWith<$Res> { bool hasUnreadChannel, bool hasUnreadNotification, bool hasPendingReceivedFollowRequest, + List unreadAnnouncements, @MuteWordsConverter() List mutedWords, List mutedInstances, List mutingNotificationTypes, @@ -678,6 +687,7 @@ class __$$_IResponseCopyWithImpl<$Res> Object? hasUnreadChannel = null, Object? hasUnreadNotification = null, Object? hasPendingReceivedFollowRequest = null, + Object? unreadAnnouncements = null, Object? mutedWords = null, Object? mutedInstances = null, Object? mutingNotificationTypes = null, @@ -919,6 +929,10 @@ class __$$_IResponseCopyWithImpl<$Res> ? _value.hasPendingReceivedFollowRequest : hasPendingReceivedFollowRequest // ignore: cast_nullable_to_non_nullable as bool, + unreadAnnouncements: null == unreadAnnouncements + ? _value._unreadAnnouncements + : unreadAnnouncements // ignore: cast_nullable_to_non_nullable + as List, mutedWords: null == mutedWords ? _value._mutedWords : mutedWords // ignore: cast_nullable_to_non_nullable @@ -1013,6 +1027,7 @@ class _$_IResponse implements _IResponse { required this.hasUnreadChannel, required this.hasUnreadNotification, required this.hasPendingReceivedFollowRequest, + final List unreadAnnouncements = const [], @MuteWordsConverter() required final List mutedWords, required final List mutedInstances, required final List mutingNotificationTypes, @@ -1025,6 +1040,7 @@ class _$_IResponse implements _IResponse { _fields = fields, _pinnedNoteIds = pinnedNoteIds, _pinnedPage = pinnedPage, + _unreadAnnouncements = unreadAnnouncements, _mutedWords = mutedWords, _mutedInstances = mutedInstances, _mutingNotificationTypes = mutingNotificationTypes, @@ -1196,6 +1212,16 @@ class _$_IResponse implements _IResponse { final bool hasUnreadNotification; @override final bool hasPendingReceivedFollowRequest; + final List _unreadAnnouncements; + @override + @JsonKey() + List get unreadAnnouncements { + if (_unreadAnnouncements is EqualUnmodifiableListView) + return _unreadAnnouncements; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_unreadAnnouncements); + } + final List _mutedWords; @override @MuteWordsConverter() @@ -1248,7 +1274,7 @@ class _$_IResponse implements _IResponse { @override String toString() { - return 'IResponse(id: $id, name: $name, username: $username, host: $host, avatarUrl: $avatarUrl, avatarBlurhash: $avatarBlurhash, isBot: $isBot, isCat: $isCat, emojis: $emojis, onlineStatus: $onlineStatus, badgeRoles: $badgeRoles, url: $url, uri: $uri, createdAt: $createdAt, updatedAt: $updatedAt, lastFetchedAt: $lastFetchedAt, bannerUrl: $bannerUrl, bannerBlurhash: $bannerBlurhash, isLocked: $isLocked, isSilenced: $isSilenced, isSuspended: $isSuspended, description: $description, location: $location, birthday: $birthday, lang: $lang, fields: $fields, followersCount: $followersCount, followingCount: $followingCount, notesCount: $notesCount, pinnedNoteIds: $pinnedNoteIds, pinnedPageId: $pinnedPageId, pinnedPage: $pinnedPage, publicReactions: $publicReactions, ffVisibility: $ffVisibility, twoFactorEnabled: $twoFactorEnabled, usePasswordLessLogin: $usePasswordLessLogin, securityKeys: $securityKeys, avatarId: $avatarId, bannerId: $bannerId, isModerator: $isModerator, isAdmin: $isAdmin, injectFeaturedNote: $injectFeaturedNote, receiveAnnouncementEmail: $receiveAnnouncementEmail, alwaysMarkNsfw: $alwaysMarkNsfw, autoSensitive: $autoSensitive, carefulBot: $carefulBot, autoAcceptFollowed: $autoAcceptFollowed, noCrawle: $noCrawle, isExplorable: $isExplorable, isDeleted: $isDeleted, hideOnlineStatus: $hideOnlineStatus, hasUnreadSpecifiedNotes: $hasUnreadSpecifiedNotes, hasUnreadMentions: $hasUnreadMentions, hasUnreadAnnouncement: $hasUnreadAnnouncement, hasUnreadAntenna: $hasUnreadAntenna, hasUnreadChannel: $hasUnreadChannel, hasUnreadNotification: $hasUnreadNotification, hasPendingReceivedFollowRequest: $hasPendingReceivedFollowRequest, mutedWords: $mutedWords, mutedInstances: $mutedInstances, mutingNotificationTypes: $mutingNotificationTypes, emailNotificationTypes: $emailNotificationTypes, achievements: $achievements, loggedInDays: $loggedInDays, policies: $policies)'; + return 'IResponse(id: $id, name: $name, username: $username, host: $host, avatarUrl: $avatarUrl, avatarBlurhash: $avatarBlurhash, isBot: $isBot, isCat: $isCat, emojis: $emojis, onlineStatus: $onlineStatus, badgeRoles: $badgeRoles, url: $url, uri: $uri, createdAt: $createdAt, updatedAt: $updatedAt, lastFetchedAt: $lastFetchedAt, bannerUrl: $bannerUrl, bannerBlurhash: $bannerBlurhash, isLocked: $isLocked, isSilenced: $isSilenced, isSuspended: $isSuspended, description: $description, location: $location, birthday: $birthday, lang: $lang, fields: $fields, followersCount: $followersCount, followingCount: $followingCount, notesCount: $notesCount, pinnedNoteIds: $pinnedNoteIds, pinnedPageId: $pinnedPageId, pinnedPage: $pinnedPage, publicReactions: $publicReactions, ffVisibility: $ffVisibility, twoFactorEnabled: $twoFactorEnabled, usePasswordLessLogin: $usePasswordLessLogin, securityKeys: $securityKeys, avatarId: $avatarId, bannerId: $bannerId, isModerator: $isModerator, isAdmin: $isAdmin, injectFeaturedNote: $injectFeaturedNote, receiveAnnouncementEmail: $receiveAnnouncementEmail, alwaysMarkNsfw: $alwaysMarkNsfw, autoSensitive: $autoSensitive, carefulBot: $carefulBot, autoAcceptFollowed: $autoAcceptFollowed, noCrawle: $noCrawle, isExplorable: $isExplorable, isDeleted: $isDeleted, hideOnlineStatus: $hideOnlineStatus, hasUnreadSpecifiedNotes: $hasUnreadSpecifiedNotes, hasUnreadMentions: $hasUnreadMentions, hasUnreadAnnouncement: $hasUnreadAnnouncement, hasUnreadAntenna: $hasUnreadAntenna, hasUnreadChannel: $hasUnreadChannel, hasUnreadNotification: $hasUnreadNotification, hasPendingReceivedFollowRequest: $hasPendingReceivedFollowRequest, unreadAnnouncements: $unreadAnnouncements, mutedWords: $mutedWords, mutedInstances: $mutedInstances, mutingNotificationTypes: $mutingNotificationTypes, emailNotificationTypes: $emailNotificationTypes, achievements: $achievements, loggedInDays: $loggedInDays, policies: $policies)'; } @override @@ -1356,6 +1382,7 @@ class _$_IResponse implements _IResponse { (identical(other.hasUnreadChannel, hasUnreadChannel) || other.hasUnreadChannel == hasUnreadChannel) && (identical(other.hasUnreadNotification, hasUnreadNotification) || other.hasUnreadNotification == hasUnreadNotification) && (identical(other.hasPendingReceivedFollowRequest, hasPendingReceivedFollowRequest) || other.hasPendingReceivedFollowRequest == hasPendingReceivedFollowRequest) && + const DeepCollectionEquality().equals(other._unreadAnnouncements, _unreadAnnouncements) && const DeepCollectionEquality().equals(other._mutedWords, _mutedWords) && const DeepCollectionEquality().equals(other._mutedInstances, _mutedInstances) && const DeepCollectionEquality().equals(other._mutingNotificationTypes, _mutingNotificationTypes) && @@ -1427,6 +1454,7 @@ class _$_IResponse implements _IResponse { hasUnreadChannel, hasUnreadNotification, hasPendingReceivedFollowRequest, + const DeepCollectionEquality().hash(_unreadAnnouncements), const DeepCollectionEquality().hash(_mutedWords), const DeepCollectionEquality().hash(_mutedInstances), const DeepCollectionEquality().hash(_mutingNotificationTypes), @@ -1510,6 +1538,7 @@ abstract class _IResponse implements IResponse { required final bool hasUnreadChannel, required final bool hasUnreadNotification, required final bool hasPendingReceivedFollowRequest, + final List unreadAnnouncements, @MuteWordsConverter() required final List mutedWords, required final List mutedInstances, required final List mutingNotificationTypes, @@ -1646,6 +1675,8 @@ abstract class _IResponse implements IResponse { @override bool get hasPendingReceivedFollowRequest; @override + List get unreadAnnouncements; + @override @MuteWordsConverter() List get mutedWords; @override diff --git a/lib/src/data/i_response.g.dart b/lib/src/data/i_response.g.dart index 74132620..0b2ac5ab 100644 --- a/lib/src/data/i_response.g.dart +++ b/lib/src/data/i_response.g.dart @@ -79,6 +79,11 @@ _$_IResponse _$$_IResponseFromJson(Map json) => _$_IResponse( hasUnreadNotification: json['hasUnreadNotification'] as bool, hasPendingReceivedFollowRequest: json['hasPendingReceivedFollowRequest'] as bool, + unreadAnnouncements: (json['unreadAnnouncements'] as List?) + ?.map((e) => + AnnouncementsResponse.fromJson(e as Map)) + .toList() ?? + const [], mutedWords: (json['mutedWords'] as List) .map(const MuteWordsConverter().fromJson) .toList(), @@ -161,6 +166,7 @@ Map _$$_IResponseToJson(_$_IResponse instance) => 'hasUnreadNotification': instance.hasUnreadNotification, 'hasPendingReceivedFollowRequest': instance.hasPendingReceivedFollowRequest, + 'unreadAnnouncements': instance.unreadAnnouncements, 'mutedWords': instance.mutedWords.map(const MuteWordsConverter().toJson).toList(), 'mutedInstances': instance.mutedInstances, diff --git a/lib/src/enums/announcement_display_type.dart b/lib/src/enums/announcement_display_type.dart new file mode 100644 index 00000000..bbb97ec7 --- /dev/null +++ b/lib/src/enums/announcement_display_type.dart @@ -0,0 +1 @@ +enum AnnouncementDisplayType { banner, dialog, normal } diff --git a/lib/src/enums/announcement_icon_type.dart b/lib/src/enums/announcement_icon_type.dart new file mode 100644 index 00000000..9eb44a70 --- /dev/null +++ b/lib/src/enums/announcement_icon_type.dart @@ -0,0 +1 @@ +enum AnnouncementIconType { info, error, warning, success } diff --git a/lib/src/misskey_i.dart b/lib/src/misskey_i.dart index ee330bc2..3fa043ca 100644 --- a/lib/src/misskey_i.dart +++ b/lib/src/misskey_i.dart @@ -1,4 +1,5 @@ import 'package:misskey_dart/misskey_dart.dart'; +import 'package:misskey_dart/src/data/i/i_read_announcement_request.dart'; import 'package:misskey_dart/src/services/api_service.dart'; class MisskeyI { @@ -20,6 +21,11 @@ class MisskeyI { return response.map((e) => INotificationsResponse.fromJson(e)); } + /// お知らせを既読にします。 + Future readAnnouncement(IReadAnnouncementRequest request) async { + await _apiService.post("i/read-announcement", request.toJson()); + } + /// お気に入りに登録されたノートの一覧を取得します。 Future> favorites( IFavoritesRequest request) async {