Skip to content

Commit

Permalink
Merge branch 'lint/animate-timeline' into next
Browse files Browse the repository at this point in the history
  • Loading branch information
poppingmoon committed Jan 2, 2024
2 parents 2659c7a + 71c15e1 commit 54ddd5d
Show file tree
Hide file tree
Showing 5 changed files with 92 additions and 76 deletions.
4 changes: 2 additions & 2 deletions lib/model/timeline_page_state.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import 'package:flutter/material.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:miria/model/tab_setting.dart';

part 'timeline_page_state.freezed.dart';

Expand All @@ -9,6 +8,7 @@ class TimelinePageState with _$TimelinePageState {
const factory TimelinePageState({
required PageController pageController,
required int index,
required TabSetting tabSetting,
@Default(false) bool isErrorExpanded,
}) = _TimelinePageState;
const TimelinePageState._();
}
62 changes: 26 additions & 36 deletions lib/model/timeline_page_state.freezed.dart
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ final _privateConstructorUsedError = UnsupportedError(
mixin _$TimelinePageState {
PageController get pageController => throw _privateConstructorUsedError;
int get index => throw _privateConstructorUsedError;
TabSetting get tabSetting => throw _privateConstructorUsedError;
bool get isErrorExpanded => throw _privateConstructorUsedError;

@JsonKey(ignore: true)
$TimelinePageStateCopyWith<TimelinePageState> get copyWith =>
Expand All @@ -31,9 +31,7 @@ abstract class $TimelinePageStateCopyWith<$Res> {
TimelinePageState value, $Res Function(TimelinePageState) then) =
_$TimelinePageStateCopyWithImpl<$Res, TimelinePageState>;
@useResult
$Res call({PageController pageController, int index, TabSetting tabSetting});

$TabSettingCopyWith<$Res> get tabSetting;
$Res call({PageController pageController, int index, bool isErrorExpanded});
}

/// @nodoc
Expand All @@ -51,7 +49,7 @@ class _$TimelinePageStateCopyWithImpl<$Res, $Val extends TimelinePageState>
$Res call({
Object? pageController = null,
Object? index = null,
Object? tabSetting = null,
Object? isErrorExpanded = null,
}) {
return _then(_value.copyWith(
pageController: null == pageController
Expand All @@ -62,20 +60,12 @@ class _$TimelinePageStateCopyWithImpl<$Res, $Val extends TimelinePageState>
? _value.index
: index // ignore: cast_nullable_to_non_nullable
as int,
tabSetting: null == tabSetting
? _value.tabSetting
: tabSetting // ignore: cast_nullable_to_non_nullable
as TabSetting,
isErrorExpanded: null == isErrorExpanded
? _value.isErrorExpanded
: isErrorExpanded // ignore: cast_nullable_to_non_nullable
as bool,
) as $Val);
}

@override
@pragma('vm:prefer-inline')
$TabSettingCopyWith<$Res> get tabSetting {
return $TabSettingCopyWith<$Res>(_value.tabSetting, (value) {
return _then(_value.copyWith(tabSetting: value) as $Val);
});
}
}

/// @nodoc
Expand All @@ -86,10 +76,7 @@ abstract class _$$TimelinePageStateImplCopyWith<$Res>
__$$TimelinePageStateImplCopyWithImpl<$Res>;
@override
@useResult
$Res call({PageController pageController, int index, TabSetting tabSetting});

@override
$TabSettingCopyWith<$Res> get tabSetting;
$Res call({PageController pageController, int index, bool isErrorExpanded});
}

/// @nodoc
Expand All @@ -105,7 +92,7 @@ class __$$TimelinePageStateImplCopyWithImpl<$Res>
$Res call({
Object? pageController = null,
Object? index = null,
Object? tabSetting = null,
Object? isErrorExpanded = null,
}) {
return _then(_$TimelinePageStateImpl(
pageController: null == pageController
Expand All @@ -116,32 +103,34 @@ class __$$TimelinePageStateImplCopyWithImpl<$Res>
? _value.index
: index // ignore: cast_nullable_to_non_nullable
as int,
tabSetting: null == tabSetting
? _value.tabSetting
: tabSetting // ignore: cast_nullable_to_non_nullable
as TabSetting,
isErrorExpanded: null == isErrorExpanded
? _value.isErrorExpanded
: isErrorExpanded // ignore: cast_nullable_to_non_nullable
as bool,
));
}
}

/// @nodoc
class _$TimelinePageStateImpl implements _TimelinePageState {
class _$TimelinePageStateImpl extends _TimelinePageState {
const _$TimelinePageStateImpl(
{required this.pageController,
required this.index,
required this.tabSetting});
this.isErrorExpanded = false})
: super._();

@override
final PageController pageController;
@override
final int index;
@override
final TabSetting tabSetting;
@JsonKey()
final bool isErrorExpanded;

@override
String toString() {
return 'TimelinePageState(pageController: $pageController, index: $index, tabSetting: $tabSetting)';
return 'TimelinePageState(pageController: $pageController, index: $index, isErrorExpanded: $isErrorExpanded)';
}

@override
Expand All @@ -152,13 +141,13 @@ class _$TimelinePageStateImpl implements _TimelinePageState {
(identical(other.pageController, pageController) ||
other.pageController == pageController) &&
(identical(other.index, index) || other.index == index) &&
(identical(other.tabSetting, tabSetting) ||
other.tabSetting == tabSetting));
(identical(other.isErrorExpanded, isErrorExpanded) ||
other.isErrorExpanded == isErrorExpanded));
}

@override
int get hashCode =>
Object.hash(runtimeType, pageController, index, tabSetting);
Object.hash(runtimeType, pageController, index, isErrorExpanded);

@JsonKey(ignore: true)
@override
Expand All @@ -168,18 +157,19 @@ class _$TimelinePageStateImpl implements _TimelinePageState {
this, _$identity);
}

abstract class _TimelinePageState implements TimelinePageState {
abstract class _TimelinePageState extends TimelinePageState {
const factory _TimelinePageState(
{required final PageController pageController,
required final int index,
required final TabSetting tabSetting}) = _$TimelinePageStateImpl;
final bool isErrorExpanded}) = _$TimelinePageStateImpl;
const _TimelinePageState._() : super._();

@override
PageController get pageController;
@override
int get index;
@override
TabSetting get tabSetting;
bool get isErrorExpanded;
@override
@JsonKey(ignore: true)
_$$TimelinePageStateImplCopyWith<_$TimelinePageStateImpl> get copyWith =>
Expand Down
41 changes: 26 additions & 15 deletions lib/state_notifier/timeline_page/timeline_page_controller.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import 'package:auto_route/auto_route.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:miria/model/tab_setting.dart';
import 'package:miria/model/timeline_page_state.dart';
import 'package:miria/providers.dart';
import 'package:miria/router/app_router.dart';
Expand All @@ -13,33 +14,35 @@ class TimelinePageController extends AutoDisposeNotifier<TimelinePageState> {
@override
TimelinePageState build() {
final pageController = PageController();
final tabSetting =
ref.watch(tabSettingsRepositoryProvider).tabSettings.first;
ref.onDispose(() {
pageController.dispose();
});
return TimelinePageState(
pageController: pageController,
index: 0,
tabSetting: tabSetting,
);
}

TabSetting get _tabSetting {
return ref
.read(tabSettingsRepositoryProvider)
.tabSettings
.elementAt(state.index);
}

void changePage(int index) {
final tabSetting =
ref.read(tabSettingsRepositoryProvider).tabSettings.elementAt(index);
state = state.copyWith(index: index, tabSetting: tabSetting);
state = state.copyWith(index: index);
}

void forceScrollToTop() {
ref
.read(timelineControllerProvider(state.tabSetting).notifier)
.read(timelineControllerProvider(_tabSetting).notifier)
.forceScrollToTop();
}

Future<void> reconnect() async {
await ref
.read(timelineRepositoryProvider(state.tabSetting).notifier)
.read(timelineRepositoryProvider(_tabSetting).notifier)
.startTimeline(restart: true);
forceScrollToTop();
}
Expand All @@ -61,17 +64,17 @@ class TimelinePageController extends AutoDisposeNotifier<TimelinePageState> {
try {
final accountSettings = ref
.read(accountSettingsRepositoryProvider)
.fromAcct(state.tabSetting.acct);
.fromAcct(_tabSetting.acct);
ref.read(timelineNoteProvider).clear();
FocusManager.instance.primaryFocus?.unfocus();

final account = ref.read(accountProvider(state.tabSetting.acct));
final account = ref.read(accountProvider(_tabSetting.acct));
await ref.read(misskeyProvider(account)).notes.create(
NotesCreateRequest(
text: text,
channelId: state.tabSetting.channelId,
channelId: _tabSetting.channelId,
visibility: accountSettings.defaultNoteVisibility,
localOnly: state.tabSetting.channelId != null ||
localOnly: _tabSetting.channelId != null ||
accountSettings.defaultIsLocalOnly,
reactionAcceptance: accountSettings.defaultReactionAcceptance,
),
Expand All @@ -84,9 +87,9 @@ class TimelinePageController extends AutoDisposeNotifier<TimelinePageState> {

void noteCreateRoute(BuildContext context) {
CommunityChannel? channel;
final channelId = state.tabSetting.channelId;
final channelId = _tabSetting.channelId;
if (channelId != null) {
final timeline = ref.read(timelineRepositoryProvider(state.tabSetting));
final timeline = ref.read(timelineRepositoryProvider(_tabSetting));
final channelName = timeline.oldestNote?.channel?.name;

channel = CommunityChannel(
Expand All @@ -108,8 +111,16 @@ class TimelinePageController extends AutoDisposeNotifier<TimelinePageState> {
NoteCreateRoute(
channel: channel,
initialText: sendText,
initialAccount: ref.read(accountProvider(state.tabSetting.acct)),
initialAccount: ref.read(accountProvider(_tabSetting.acct)),
),
);
}

void expandError() {
state = state.copyWith(isErrorExpanded: true);
}

void foldError() {
state = state.copyWith(isErrorExpanded: false);
}
}
6 changes: 0 additions & 6 deletions lib/view/timeline_page/misskey_timeline.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:miria/model/general_settings.dart';
import 'package:miria/model/tab_setting.dart';
import 'package:miria/providers.dart';
import 'package:miria/view/common/error_detail.dart';
import 'package:miria/view/common/error_dialog_handler.dart';
import 'package:miria/view/timeline_page/note_wrapper.dart';

Expand All @@ -29,11 +28,6 @@ class MisskeyTimeline extends ConsumerWidget {
padding: EdgeInsets.only(top: 10),
child: Center(child: CircularProgressIndicator()),
),
if (timeline.error != null)
ErrorDetail(
error: timeline.error?.$1,
stackTrace: timeline.error?.$2,
),
Expanded(
child: Padding(
padding: const EdgeInsets.only(right: 10),
Expand Down
Loading

0 comments on commit 54ddd5d

Please sign in to comment.