Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CIを追加 #32

Merged
merged 11 commits into from
Nov 26, 2023
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
26 changes: 26 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: CI

on: [push, pull_request]

jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dart-lang/setup-dart@v1
- run: ./test/testenv/setup.sh
- run: dart pub get
- run: dart test --test-randomize-ordering-seed=random
format:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dart-lang/setup-dart@v1
- run: dart format --output=none --set-exit-if-changed .
analyze:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dart-lang/setup-dart@v1
- run: dart pub get
- run: dart analyze
18 changes: 18 additions & 0 deletions .github/workflows/test_develop.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
name: Test on misskey/develop

on:
schedule:
- cron: "0 0 * * *"
workflow_dispatch:

jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dart-lang/setup-dart@v1
- run: ./test/testenv/setup.sh
env:
MISSKEY_IMAGE: misskey/misskey:develop
- run: dart pub get
- run: dart test --test-randomize-ordering-seed=random
4 changes: 2 additions & 2 deletions analysis_options.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
include: package:lints/recommended.yaml
analyzer:
exclude:
- /**/*.freezed.dart
- /**/*.g.dart
- "**/*.freezed.dart"
- "**/*.g.dart"
1 change: 0 additions & 1 deletion lib/src/converters/mute_words_converter.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:misskey_dart/misskey_dart.dart';

Expand Down
1 change: 0 additions & 1 deletion lib/src/data/i/i_update_request.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:misskey_dart/misskey_dart.dart';
import 'package:misskey_dart/src/converters/date_time_converter.dart';
import 'package:misskey_dart/src/converters/mute_words_converter.dart';
import 'package:misskey_dart/src/enums/ff_visibility.dart';

part 'i_update_request.freezed.dart';
part 'i_update_request.g.dart';
Expand Down
23 changes: 22 additions & 1 deletion lib/src/data/i_response.freezed.dart
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ mixin _$IResponse {
bool get hasUnreadNotification => throw _privateConstructorUsedError;
bool get hasPendingReceivedFollowRequest =>
throw _privateConstructorUsedError;
int? get unreadNotificationsCount => throw _privateConstructorUsedError;
List<AnnouncementsResponse> get unreadAnnouncements =>
throw _privateConstructorUsedError;
@MuteWordsConverter()
Expand Down Expand Up @@ -176,6 +177,7 @@ abstract class $IResponseCopyWith<$Res> {
bool hasUnreadChannel,
bool hasUnreadNotification,
bool hasPendingReceivedFollowRequest,
int? unreadNotificationsCount,
List<AnnouncementsResponse> unreadAnnouncements,
@MuteWordsConverter() List<MuteWord> mutedWords,
List<String> mutedInstances,
Expand Down Expand Up @@ -262,6 +264,7 @@ class _$IResponseCopyWithImpl<$Res, $Val extends IResponse>
Object? hasUnreadChannel = null,
Object? hasUnreadNotification = null,
Object? hasPendingReceivedFollowRequest = null,
Object? unreadNotificationsCount = freezed,
Object? unreadAnnouncements = null,
Object? mutedWords = null,
Object? mutedInstances = null,
Expand Down Expand Up @@ -509,6 +512,10 @@ class _$IResponseCopyWithImpl<$Res, $Val extends IResponse>
? _value.hasPendingReceivedFollowRequest
: hasPendingReceivedFollowRequest // ignore: cast_nullable_to_non_nullable
as bool,
unreadNotificationsCount: freezed == unreadNotificationsCount
? _value.unreadNotificationsCount
: unreadNotificationsCount // ignore: cast_nullable_to_non_nullable
as int?,
unreadAnnouncements: null == unreadAnnouncements
? _value.unreadAnnouncements
: unreadAnnouncements // ignore: cast_nullable_to_non_nullable
Expand Down Expand Up @@ -625,6 +632,7 @@ abstract class _$$IResponseImplCopyWith<$Res>
bool hasUnreadChannel,
bool hasUnreadNotification,
bool hasPendingReceivedFollowRequest,
int? unreadNotificationsCount,
List<AnnouncementsResponse> unreadAnnouncements,
@MuteWordsConverter() List<MuteWord> mutedWords,
List<String> mutedInstances,
Expand Down Expand Up @@ -710,6 +718,7 @@ class __$$IResponseImplCopyWithImpl<$Res>
Object? hasUnreadChannel = null,
Object? hasUnreadNotification = null,
Object? hasPendingReceivedFollowRequest = null,
Object? unreadNotificationsCount = freezed,
Object? unreadAnnouncements = null,
Object? mutedWords = null,
Object? mutedInstances = null,
Expand Down Expand Up @@ -957,6 +966,10 @@ class __$$IResponseImplCopyWithImpl<$Res>
? _value.hasPendingReceivedFollowRequest
: hasPendingReceivedFollowRequest // ignore: cast_nullable_to_non_nullable
as bool,
unreadNotificationsCount: freezed == unreadNotificationsCount
? _value.unreadNotificationsCount
: unreadNotificationsCount // ignore: cast_nullable_to_non_nullable
as int?,
unreadAnnouncements: null == unreadAnnouncements
? _value._unreadAnnouncements
: unreadAnnouncements // ignore: cast_nullable_to_non_nullable
Expand Down Expand Up @@ -1060,6 +1073,7 @@ class _$IResponseImpl implements _IResponse {
required this.hasUnreadChannel,
required this.hasUnreadNotification,
required this.hasPendingReceivedFollowRequest,
this.unreadNotificationsCount,
final List<AnnouncementsResponse> unreadAnnouncements = const [],
@MuteWordsConverter() required final List<MuteWord> mutedWords,
required final List<String> mutedInstances,
Expand Down Expand Up @@ -1260,6 +1274,8 @@ class _$IResponseImpl implements _IResponse {
final bool hasUnreadNotification;
@override
final bool hasPendingReceivedFollowRequest;
@override
final int? unreadNotificationsCount;
final List<AnnouncementsResponse> _unreadAnnouncements;
@override
@JsonKey()
Expand Down Expand Up @@ -1327,7 +1343,7 @@ class _$IResponseImpl implements _IResponse {

@override
String toString() {
return 'IResponse(id: $id, name: $name, username: $username, host: $host, avatarUrl: $avatarUrl, avatarBlurhash: $avatarBlurhash, avatarDecorations: $avatarDecorations, 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, notificationRecieveConfig: $notificationRecieveConfig, emailNotificationTypes: $emailNotificationTypes, achievements: $achievements, loggedInDays: $loggedInDays, policies: $policies)';
return 'IResponse(id: $id, name: $name, username: $username, host: $host, avatarUrl: $avatarUrl, avatarBlurhash: $avatarBlurhash, avatarDecorations: $avatarDecorations, 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, unreadNotificationsCount: $unreadNotificationsCount, unreadAnnouncements: $unreadAnnouncements, mutedWords: $mutedWords, mutedInstances: $mutedInstances, mutingNotificationTypes: $mutingNotificationTypes, notificationRecieveConfig: $notificationRecieveConfig, emailNotificationTypes: $emailNotificationTypes, achievements: $achievements, loggedInDays: $loggedInDays, policies: $policies)';
}

@override
Expand Down Expand Up @@ -1436,6 +1452,7 @@ class _$IResponseImpl implements _IResponse {
(identical(other.hasUnreadChannel, hasUnreadChannel) || other.hasUnreadChannel == hasUnreadChannel) &&
(identical(other.hasUnreadNotification, hasUnreadNotification) || other.hasUnreadNotification == hasUnreadNotification) &&
(identical(other.hasPendingReceivedFollowRequest, hasPendingReceivedFollowRequest) || other.hasPendingReceivedFollowRequest == hasPendingReceivedFollowRequest) &&
(identical(other.unreadNotificationsCount, unreadNotificationsCount) || other.unreadNotificationsCount == unreadNotificationsCount) &&
const DeepCollectionEquality().equals(other._unreadAnnouncements, _unreadAnnouncements) &&
const DeepCollectionEquality().equals(other._mutedWords, _mutedWords) &&
const DeepCollectionEquality().equals(other._mutedInstances, _mutedInstances) &&
Expand Down Expand Up @@ -1510,6 +1527,7 @@ class _$IResponseImpl implements _IResponse {
hasUnreadChannel,
hasUnreadNotification,
hasPendingReceivedFollowRequest,
unreadNotificationsCount,
const DeepCollectionEquality().hash(_unreadAnnouncements),
const DeepCollectionEquality().hash(_mutedWords),
const DeepCollectionEquality().hash(_mutedInstances),
Expand Down Expand Up @@ -1596,6 +1614,7 @@ abstract class _IResponse implements IResponse {
required final bool hasUnreadChannel,
required final bool hasUnreadNotification,
required final bool hasPendingReceivedFollowRequest,
final int? unreadNotificationsCount,
final List<AnnouncementsResponse> unreadAnnouncements,
@MuteWordsConverter() required final List<MuteWord> mutedWords,
required final List<String> mutedInstances,
Expand Down Expand Up @@ -1738,6 +1757,8 @@ abstract class _IResponse implements IResponse {
@override
bool get hasPendingReceivedFollowRequest;
@override
int? get unreadNotificationsCount;
@override
List<AnnouncementsResponse> get unreadAnnouncements;
@override
@MuteWordsConverter()
Expand Down
2 changes: 2 additions & 0 deletions lib/src/data/i_response.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions lib/src/data/join_misskey_instances.dart
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ class JoinMisskeyInstanceInfo with _$JoinMisskeyInstanceInfo {
@Default(false) bool banner,
@Default(false) bool background,
@Default(false) bool icon,
// ignore: invalid_annotation_target
@JsonKey(name: "nodeinfo") JoinMisskeyNodeInfo? nodeInfo,
}) = _JoinMisskeyInstanceInfo;

Expand Down
2 changes: 1 addition & 1 deletion lib/src/data/roles/roles_notes_request.dart
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ class RolesNotesRequest with _$RolesNotesRequest {
String? sinceId,
String? untilId,
@EpocTimeDateTimeConverter.withMilliSeconds() DateTime? sinceDate,
@EpocTimeDateTimeConverter.withMilliSeconds() DateTime? untilDate,
@EpocTimeDateTimeConverter.withMilliSeconds() DateTime? untilDate,
}) = _RolesNotesRequest;

factory RolesNotesRequest.fromJson(Map<String, Object?> json) =>
Expand Down
1 change: 1 addition & 0 deletions lib/src/data/users/users_flashs_response.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

1 change: 1 addition & 0 deletions lib/src/data/users/users_show_request.dart
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ class UsersShowByIdsRequest with _$UsersShowByIdsRequest {
@freezed
class UsersShowByUserNameRequest with _$UsersShowByUserNameRequest {
const factory UsersShowByUserNameRequest({
// ignore: invalid_annotation_target
@JsonKey(name: "username") required String userName,
String? host,
}) = _UsersShowByUserNameRequest;
Expand Down
1 change: 0 additions & 1 deletion lib/src/data/users/users_show_response.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import 'package:misskey_dart/src/converters/date_time_converter.dart';
import 'package:misskey_dart/src/converters/emojis_converter.dart';
import 'package:misskey_dart/src/converters/mute_words_converter.dart';
import 'package:misskey_dart/src/converters/uri_converter.dart';
import 'package:misskey_dart/src/enums/online_status.dart';

part 'users_show_response.freezed.dart';
part 'users_show_response.g.dart';
Expand Down
13 changes: 6 additions & 7 deletions lib/src/misskey_dart_base.dart
Original file line number Diff line number Diff line change
@@ -1,20 +1,15 @@
import 'dart:async';
import 'dart:developer';

import 'package:misskey_dart/misskey_dart.dart';
import 'package:misskey_dart/src/data/get_avatar_decorations_response.dart';
import 'package:misskey_dart/src/data/ping_response.dart';
import 'package:misskey_dart/src/data/stats_response.dart';
import 'package:misskey_dart/src/data/streaming/global_timeline_parameter.dart';
import 'package:misskey_dart/src/data/streaming/home_timeline_parameter.dart';
import 'package:misskey_dart/src/data/streaming/hybrid_timeline_parameter.dart';
import 'package:misskey_dart/src/data/streaming/local_timeline_parameter.dart';
import 'package:misskey_dart/src/enums/broadcast_event_type.dart';
import 'package:misskey_dart/src/enums/channel.dart';
import 'package:misskey_dart/src/enums/channel_event_type.dart';
import 'package:misskey_dart/src/enums/note_updated_event_type.dart';
import 'package:misskey_dart/src/misskey_flash.dart';
import 'package:misskey_dart/src/services/api_service.dart';
import 'package:misskey_dart/src/services/streaming_service.dart';

class Misskey {
final String? token;
Expand Down Expand Up @@ -320,6 +315,7 @@ class Misskey {
FutureOr<void> Function(String id, TimelineReacted reaction)? onUnreacted,
FutureOr<void> Function(String id, DateTime deletedAt)? onDeleted,
FutureOr<void> Function(String id, TimelineVoted vote)? onVoted,
FutureOr<void> Function(String id, NoteEdited note)? onUpdated,
}) =>
streamingService.connect(
channel: Channel.roleTimeline,
Expand All @@ -343,6 +339,9 @@ class Misskey {
case NoteUpdatedEventType.pollVoted:
await onVoted?.call(id, TimelineVoted.fromJson(response));
return;
case NoteUpdatedEventType.updated:
await onUpdated?.call(id, NoteEdited.fromJson(response));
return;
}
},
parameters: {"roleId": roleId},
Expand Down Expand Up @@ -558,7 +557,7 @@ class Misskey {
streamingService.connect(
channel: Channel.main,
onChannelEventReceived: (type, response) async {
print(response);
log(response.toString());
switch (type) {
case ChannelEventType.notification:
await onNotification
Expand Down
4 changes: 1 addition & 3 deletions lib/src/misskey_drive.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,8 @@ class MisskeyDrive {
final MisskeyDriveFiles files;
final MisskeyDriveFolders folders;

final ApiService _apiService;
MisskeyDrive(ApiService apiService)
: _apiService = apiService,
files = MisskeyDriveFiles(apiService),
: files = MisskeyDriveFiles(apiService),
folders = MisskeyDriveFolders(apiService);
}

Expand Down
1 change: 0 additions & 1 deletion lib/src/misskey_following.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import 'package:misskey_dart/misskey_dart.dart';
import 'package:misskey_dart/src/data/following/following_update_all.dart';
import 'package:misskey_dart/src/services/api_service.dart';

class MisskeyFollowing {
Expand Down
3 changes: 0 additions & 3 deletions lib/src/misskey_hashtags.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
import 'package:misskey_dart/misskey_dart.dart';
import 'package:misskey_dart/src/data/hashtags/hashtags_search_request.dart';
import 'package:misskey_dart/src/data/hashtags/hashtags_show_request.dart';
import 'package:misskey_dart/src/data/hashtags/hashtags_users_request.dart';
import 'package:misskey_dart/src/services/api_service.dart';

class MisskeyHashtags {
Expand Down
1 change: 0 additions & 1 deletion lib/src/misskey_i.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
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 {
Expand Down
6 changes: 2 additions & 4 deletions lib/src/misskey_note.dart
Original file line number Diff line number Diff line change
Expand Up @@ -173,14 +173,12 @@ class MisskeyNotesReactions {

/// ノートにリアクションします。
Future<void> create(NotesReactionsCreateRequest request) async {
final response = await _apiService.post<void>(
"notes/reactions/create", request.toJson());
await _apiService.post<void>("notes/reactions/create", request.toJson());
}

/// ノートのリアクションを解除します。
Future<void> delete(NotesReactionsDeleteRequest request) async {
final response = await _apiService.post<void>(
"notes/reactions/delete", request.toJson());
await _apiService.post<void>("notes/reactions/delete", request.toJson());
}

/// ノートのリアクションを取得します。
Expand Down
4 changes: 2 additions & 2 deletions lib/src/misskey_roles.dart
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ class MisskeyRoles {

/// ロール情報をIDから取得します。
Future<RolesListResponse> show(RolesShowRequest request) async {
final response =
await _apiService.post<Map<String, dynamic>>("roles/show", request.toJson());
final response = await _apiService.post<Map<String, dynamic>>(
"roles/show", request.toJson());
return RolesListResponse.fromJson(response);
}

Expand Down
2 changes: 0 additions & 2 deletions lib/src/misskey_users.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
import 'package:misskey_dart/misskey_dart.dart';
import 'package:misskey_dart/src/data/base/flash.dart';
import 'package:misskey_dart/src/data/base/page.dart';
import 'package:misskey_dart/src/services/api_service.dart';

class MisskeyUsers {
Expand Down
7 changes: 3 additions & 4 deletions lib/src/services/socket_controller.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import 'package:misskey_dart/src/enums/broadcast_event_type.dart';
import 'package:misskey_dart/src/enums/channel.dart';
import 'package:misskey_dart/src/enums/channel_event_type.dart';
import 'package:misskey_dart/src/enums/note_updated_event_type.dart';
import 'package:misskey_dart/src/services/streaming_service.dart';
import 'package:web_socket_channel/web_socket_channel.dart';

class SocketController {
Expand Down Expand Up @@ -79,8 +78,8 @@ class SocketController {
try {
webSocketChannel.sink.add(request);
} catch (e) {
print("maybe already disconnected");
print(e);
log("maybe already disconnected");
log(e.toString());
rethrow;
} finally {
onDisconnected?.call(id);
Expand Down Expand Up @@ -136,7 +135,7 @@ class SocketController {
body: body,
),
);
print("send[${body.id}]: $request}");
log("send[${body.id}]: $request}");
webSocketChannel.sink.add(request);
}
}
Loading