show only logged in instances

This commit is contained in:
shilangyu 2020-09-26 12:43:34 +02:00
parent f0ba338bf6
commit cb2cc99546
3 changed files with 19 additions and 7 deletions

View File

@ -49,12 +49,14 @@ class CreatePost extends HookWidget {
final titleController = useTextEditingController();
final bodyController = useTextEditingController();
final accStore = useAccountsStore();
final selectedInstance = useState(instanceUrl ?? accStore.instances.first);
final selectedInstance =
useState(instanceUrl ?? accStore.loggedInInstances.first);
final selectedCommunity = useState(communityName);
final showFancy = useState(false);
final nsfw = useState(false);
final delayed = useDelayedLoading();
// TODO: use drop down from AddAccountPage
final instanceDropdown = InputDecorator(
decoration: const InputDecoration(
contentPadding: EdgeInsets.symmetric(vertical: 1, horizontal: 20),
@ -63,7 +65,7 @@ class CreatePost extends HookWidget {
child: DropdownButton<String>(
value: selectedInstance.value,
onChanged: (val) => selectedInstance.value = val,
items: accStore.instances
items: accStore.loggedInInstances
.map((instance) => DropdownMenuItem(
value: instance,
child: Text(instance),
@ -113,8 +115,6 @@ class CreatePost extends HookWidget {
handleSubmit() async {
final api = LemmyApi(selectedInstance.value).v1;
// TODO: this does not handle the case where this instance is added
// but user is not logged in
final token = accStore.defaultTokenFor(selectedInstance.value);
delayed.start();

View File

@ -133,7 +133,7 @@ abstract class _AccountsStore with Store {
}
bool isAnonymousFor(String instanceUrl) => Computed(() {
if (!users.containsKey(instanceUrl)) {
if (!instances.contains(instanceUrl)) {
return true;
}
@ -141,11 +141,15 @@ abstract class _AccountsStore with Store {
}).value;
@computed
bool get hasNoAccount => users.values.every((e) => e.isEmpty);
bool get hasNoAccount => loggedInInstances.isEmpty;
@computed
Iterable<String> get instances => users.keys;
@computed
Iterable<String> get loggedInInstances =>
instances.where((e) => !isAnonymousFor(e));
/// adds a new account
/// if it's the first account ever the account is
/// set as default for the app

View File

@ -37,6 +37,13 @@ mixin _$AccountsStore on _AccountsStore, Store {
(_$instancesComputed ??= Computed<Iterable<String>>(() => super.instances,
name: '_AccountsStore.instances'))
.value;
Computed<Iterable<String>> _$loggedInInstancesComputed;
@override
Iterable<String> get loggedInInstances => (_$loggedInInstancesComputed ??=
Computed<Iterable<String>>(() => super.loggedInInstances,
name: '_AccountsStore.loggedInInstances'))
.value;
final _$usersAtom = Atom(name: '_AccountsStore.users');
@ -147,7 +154,8 @@ tokens: ${tokens},
defaultUser: ${defaultUser},
defaultToken: ${defaultToken},
hasNoAccount: ${hasNoAccount},
instances: ${instances}
instances: ${instances},
loggedInInstances: ${loggedInInstances}
''';
}
}