mirror of
https://github.com/zoriya/Aeris.git
synced 2026-06-06 20:13:31 +00:00
Mobile Client: Signin from service
This commit is contained in:
@@ -49,5 +49,6 @@
|
||||
"authenticatedToNoService": "You are not authenticated to any services.",
|
||||
"connectService": "Connect service",
|
||||
"cantEnablePipeline": "You can't enable this pipeline because it depends on a service that is not connected",
|
||||
"from": "from"
|
||||
"from": "from",
|
||||
"cantSignInFromService": "Can't sign in using this service"
|
||||
}
|
||||
@@ -49,5 +49,6 @@
|
||||
"authenticatedToNoService": "Aucun service n'est connecté",
|
||||
"connectService": "Connexion aux services",
|
||||
"cantEnablePipeline": "Impossible d'activer la pipeline car elle dépend d'un service qui n'est pas connecté",
|
||||
"from": "de"
|
||||
"from": "de",
|
||||
"cantSignInFromService": "Impossible de se connecter via ce service"
|
||||
}
|
||||
@@ -5,6 +5,7 @@ import 'package:flutter/material.dart';
|
||||
import 'dart:core';
|
||||
|
||||
import 'package:get_it/get_it.dart';
|
||||
import 'package:line_icons/line_icon.dart';
|
||||
|
||||
/// Data class used to store data about a service (logo, url, name)
|
||||
class Service {
|
||||
@@ -87,4 +88,22 @@ class Service {
|
||||
}
|
||||
throw Exception("Unknown service");
|
||||
}
|
||||
|
||||
IconData getIcon() {
|
||||
switch (this) {
|
||||
case Service.anilist():
|
||||
return LineIcon.buysellads().icon!;
|
||||
case Service.spotify():
|
||||
return LineIcon.spotify().icon!;
|
||||
case Service.github():
|
||||
return LineIcon.alternateGithub().icon!;
|
||||
case Service.youtube():
|
||||
return LineIcon.youtube().icon!;
|
||||
case Service.twitter():
|
||||
return LineIcon.twitter().icon!;
|
||||
case Service.discord():
|
||||
return LineIcon.discord().icon!;
|
||||
}
|
||||
throw ("No icon available");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import 'package:aeris/src/aeris_api.dart';
|
||||
import 'package:aeris/src/providers/services_provider.dart';
|
||||
import 'package:aeris/src/views/create_pipeline_page.dart';
|
||||
import 'package:aeris/src/views/service_page.dart';
|
||||
import 'package:aeris/src/widgets/aeris_card_page.dart';
|
||||
@@ -44,7 +45,8 @@ class _HomePageState extends State<HomePage> {
|
||||
},
|
||||
warnedAction: AppLocalizations.of(context).logout)),
|
||||
);
|
||||
return Consumer<PipelineProvider>(
|
||||
return Consumer<ServiceProvider>(
|
||||
builder: (_, __, ___) => Consumer<PipelineProvider>(
|
||||
builder: (context, provider, _) => AerisPage(
|
||||
floatingActionButton: FloatingActionButton(
|
||||
onPressed: () => showAerisCardPage(
|
||||
@@ -93,6 +95,6 @@ class _HomePageState extends State<HomePage> {
|
||||
pipeline: provider.getPipelineAt(index),
|
||||
),
|
||||
)),
|
||||
));
|
||||
)));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,6 @@ import 'package:flutter_login/flutter_login.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||
import 'package:get_it/get_it.dart';
|
||||
import 'package:line_icons/line_icon.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
|
||||
/// Login Page Widget
|
||||
@@ -63,10 +62,11 @@ class LoginPage extends StatelessWidget {
|
||||
loginProviders: [
|
||||
for (var service in Service.all().where((element) => element != const Service.utils()).toList())
|
||||
LoginProvider(
|
||||
icon: LineIcon.alternateGithub().icon,
|
||||
icon: service.getIcon(),
|
||||
label: service.name,
|
||||
callback: () {
|
||||
launch(Uri.parse(service.authSignInUrl).toString(), forceSafariVC: false);
|
||||
callback: () async {
|
||||
await launch(Uri.parse(service.authSignInUrl).toString(), forceSafariVC: false);
|
||||
return GetIt.I<AerisAPI>().isConnected ? null : AppLocalizations.of(context).cantSignInFromService;
|
||||
}
|
||||
)
|
||||
],
|
||||
|
||||
@@ -47,7 +47,8 @@ class _SetupActionPageState extends State<SetupActionPage> {
|
||||
void initState() {
|
||||
super.initState();
|
||||
serviceState = widget.action.service;
|
||||
availableActions = GetIt.I<AerisAPI>().getActionsFor(serviceState, widget.action);
|
||||
var services = Provider.of<ServiceProvider>(context, listen: false).connectedServices;
|
||||
availableActions = GetIt.I<AerisAPI>().getActionsFor(services.contains(serviceState) ? serviceState : services[0], widget.action);
|
||||
}
|
||||
|
||||
Widget serviceDropdown(List<Service> services) {
|
||||
|
||||
Reference in New Issue
Block a user