mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-06-28 18:03:14 +08:00
Do not let the user create a repo which already exists
Fixes APP-3C
This commit is contained in:
@ -16,7 +16,7 @@ import 'loading.dart';
|
||||
|
||||
class GitHostSetupAutoConfigure extends StatefulWidget {
|
||||
final GitHostType gitHostType;
|
||||
final Func1<GitHost, void> onDone;
|
||||
final Func2<GitHost, UserInfo, void> onDone;
|
||||
|
||||
GitHostSetupAutoConfigure({
|
||||
@required this.gitHostType,
|
||||
@ -57,12 +57,13 @@ class GitHostSetupAutoConfigureState extends State<GitHostSetupAutoConfigure> {
|
||||
}
|
||||
Log.d("GitHost Initalized: " + widget.gitHostType.toString());
|
||||
|
||||
UserInfo userInfo;
|
||||
try {
|
||||
setState(() {
|
||||
_message = tr('setup.autoconfigure.readUser');
|
||||
});
|
||||
|
||||
var userInfo = await gitHost.getUserInfo();
|
||||
userInfo = await gitHost.getUserInfo();
|
||||
var settings = Provider.of<Settings>(context, listen: false);
|
||||
if (userInfo.name != null && userInfo.name.isNotEmpty) {
|
||||
settings.gitAuthor = userInfo.name;
|
||||
@ -75,7 +76,7 @@ class GitHostSetupAutoConfigureState extends State<GitHostSetupAutoConfigure> {
|
||||
_handleGitHostException(e, stacktrace);
|
||||
return;
|
||||
}
|
||||
widget.onDone(gitHost);
|
||||
widget.onDone(gitHost, userInfo);
|
||||
});
|
||||
|
||||
try {
|
||||
|
@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:easy_localization/easy_localization.dart';
|
||||
import 'package:function_types/function_types.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:path/path.dart' as p;
|
||||
import 'package:time/time.dart';
|
||||
import 'package:timeago/timeago.dart' as timeago;
|
||||
|
||||
@ -18,10 +19,12 @@ import 'package:gitjournal/utils/logger.dart';
|
||||
|
||||
class GitHostSetupRepoSelector extends StatefulWidget {
|
||||
final GitHost gitHost;
|
||||
final UserInfo userInfo;
|
||||
final Func1<GitHostRepo, void> onDone;
|
||||
|
||||
GitHostSetupRepoSelector({
|
||||
@required this.gitHost,
|
||||
@required this.userInfo,
|
||||
@required this.onDone,
|
||||
});
|
||||
|
||||
@ -123,11 +126,21 @@ class GitHostSetupRepoSelectorState extends State<GitHostSetupRepoSelector> {
|
||||
var filteredRepos = repos.where((r) {
|
||||
var repoName = r.fullName.split('/').last;
|
||||
return repoName.toLowerCase().contains(q);
|
||||
});
|
||||
}).toList();
|
||||
|
||||
var repoExists = filteredRepos.indexWhere((r) {
|
||||
var l = r.fullName.split('/');
|
||||
var username = l.first;
|
||||
var repoName = l.last;
|
||||
return repoName.toLowerCase() == _textController.text &&
|
||||
username == widget.userInfo.username;
|
||||
}) !=
|
||||
-1;
|
||||
var createRepoTile = _textController.text.isNotEmpty && !repoExists;
|
||||
|
||||
Widget repoBuilder = ListView(
|
||||
children: <Widget>[
|
||||
if (_textController.text.isNotEmpty) _buildCreateRepoTile(),
|
||||
if (createRepoTile) _buildCreateRepoTile(),
|
||||
for (var repo in filteredRepos)
|
||||
_RepoTile(
|
||||
repo: repo,
|
||||
@ -211,10 +224,11 @@ class GitHostSetupRepoSelectorState extends State<GitHostSetupRepoSelector> {
|
||||
|
||||
Widget _buildCreateRepoTile() {
|
||||
var repoName = _textController.text.trim();
|
||||
var fullRepoName = p.join(widget.userInfo.username, repoName);
|
||||
|
||||
return ListTile(
|
||||
leading: const Icon(Icons.add),
|
||||
title: Text(tr('setup.repoSelector.create', args: [repoName])),
|
||||
title: Text(tr('setup.repoSelector.create', args: [fullRepoName])),
|
||||
contentPadding: const EdgeInsets.all(0.0),
|
||||
onTap: () {
|
||||
setState(() {
|
||||
|
@ -71,6 +71,8 @@ class GitHostSetupScreenState extends State<GitHostSetupScreen> {
|
||||
var pageController = PageController();
|
||||
int _currentPageIndex = 0;
|
||||
|
||||
UserInfo _userInfo;
|
||||
|
||||
Widget _buildPage(BuildContext context, int pos) {
|
||||
assert(_pageCount >= 1);
|
||||
|
||||
@ -175,9 +177,10 @@ class GitHostSetupScreenState extends State<GitHostSetupScreen> {
|
||||
} else if (_pageChoice[1] == PageChoice1.Auto) {
|
||||
return GitHostSetupAutoConfigure(
|
||||
gitHostType: _gitHostType,
|
||||
onDone: (GitHost gitHost) {
|
||||
onDone: (GitHost gitHost, UserInfo userInfo) {
|
||||
setState(() {
|
||||
_gitHost = gitHost;
|
||||
_userInfo = userInfo;
|
||||
_pageCount = pos + 2;
|
||||
|
||||
_nextPage();
|
||||
@ -251,6 +254,7 @@ class GitHostSetupScreenState extends State<GitHostSetupScreen> {
|
||||
} else if (_pageChoice[1] == PageChoice1.Auto) {
|
||||
return GitHostSetupRepoSelector(
|
||||
gitHost: _gitHost,
|
||||
userInfo: _userInfo,
|
||||
onDone: (GitHostRepo repo) {
|
||||
setState(() {
|
||||
_gitHostRepo = repo;
|
||||
|
Reference in New Issue
Block a user