Support custom branches (#236)

This commit is contained in:
Danny Moesch 2019-01-06 20:10:47 +01:00 committed by Mingshen Sun
parent 744b46adc2
commit 6b4dbd50a9
6 changed files with 81 additions and 15 deletions

View file

@ -10,6 +10,7 @@ import UIKit
import CoreData
import SVProgressHUD
import passKit
import SwiftyUserDefaults
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
@ -33,6 +34,10 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
self.perform(#selector(postSearchNotification), with: nil, afterDelay: 0.4)
}
}
// Assign default values to global settings.
SharedDefaults.register(defaults: [DefaultsKeys.gitBranchName._key: "master"])
return true
}

View file

@ -381,10 +381,39 @@
</tableViewCell>
</cells>
</tableViewSection>
<tableViewSection headerTitle="Branch Name" id="Uoy-58-5ug" userLabel="Branch Name">
<cells>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" id="5XL-Uj-JWL" userLabel="branchNameTableViewCell">
<rect key="frame" x="0.0" y="271.33333333333337" width="414" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="5XL-Uj-JWL" id="BfY-mD-gfv">
<rect key="frame" x="0.0" y="0.0" width="414" height="43.666666666666664"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Branch Name" textAlignment="natural" adjustsFontForContentSizeCategory="YES" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="VVI-gJ-e37" userLabel="Text">
<rect key="frame" x="20" y="6.6666666666666661" width="374" height="30.333333333333336"/>
<nil key="textColor"/>
<fontDescription key="fontDescription" style="UICTFontTextStyleBody"/>
<textInputTraits key="textInputTraits" autocorrectionType="no" spellCheckingType="no" keyboardType="alphabet" returnKeyType="done"/>
<connections>
<outlet property="delegate" destination="ynQ-64-MfA" id="y89-Ub-ecB"/>
</connections>
</textField>
</subviews>
<constraints>
<constraint firstItem="VVI-gJ-e37" firstAttribute="trailing" secondItem="BfY-mD-gfv" secondAttribute="trailingMargin" id="IGP-5Y-nMm"/>
<constraint firstItem="VVI-gJ-e37" firstAttribute="centerY" secondItem="BfY-mD-gfv" secondAttribute="centerY" id="IOt-p9-Bwe"/>
<constraint firstItem="VVI-gJ-e37" firstAttribute="leading" secondItem="BfY-mD-gfv" secondAttribute="leadingMargin" id="alH-v2-xcf"/>
<constraint firstAttribute="bottomMargin" secondItem="VVI-gJ-e37" secondAttribute="bottom" constant="-4" id="pAT-la-hAA"/>
</constraints>
</tableViewCellContentView>
</tableViewCell>
</cells>
</tableViewSection>
<tableViewSection headerTitle="Authentication Method" id="h0N-tI-shZ">
<cells>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="2" indentationWidth="0.0" shouldIndentWhileEditing="NO" id="KrP-nb-haa">
<rect key="frame" x="0.0" y="271.33333333333337" width="414" height="44"/>
<rect key="frame" x="0.0" y="371.33333333333337" width="414" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KrP-nb-haa" id="1uB-oE-kfI">
<rect key="frame" x="0.0" y="0.0" width="414" height="43.666666666666664"/>
@ -416,7 +445,7 @@
<inset key="separatorInset" minX="62" minY="0.0" maxX="0.0" maxY="0.0"/>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" accessoryType="detailButton" hidesAccessoryWhenEditing="NO" indentationLevel="2" indentationWidth="0.0" shouldIndentWhileEditing="NO" id="Qmt-bo-CuJ">
<rect key="frame" x="0.0" y="315.33333333333337" width="414" height="44"/>
<rect key="frame" x="0.0" y="415.33333333333337" width="414" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Qmt-bo-CuJ" id="p3u-8b-h3U">
<rect key="frame" x="0.0" y="0.0" width="362" height="43.666666666666664"/>
@ -466,6 +495,7 @@
<connections>
<outlet property="authPasswordCell" destination="KrP-nb-haa" id="zjH-sg-dfJ"/>
<outlet property="authSSHKeyCell" destination="Qmt-bo-CuJ" id="11L-Tt-MgM"/>
<outlet property="branchNameTextField" destination="VVI-gJ-e37" id="XLA-8I-yPm"/>
<outlet property="gitURLTextField" destination="EVT-VU-sCi" id="XdU-3l-Nsv"/>
<outlet property="usernameTextField" destination="TMg-Gk-7nG" id="htL-4C-WJF"/>
<segue destination="7K9-cE-9qq" kind="unwind" identifier="saveGitServerSettingSegue" unwindAction="saveGitServerSettingWithSegue:" id="5UN-sC-xCA"/>

View file

@ -14,6 +14,7 @@ class GitServerSettingTableViewController: UITableViewController {
@IBOutlet weak var gitURLTextField: UITextField!
@IBOutlet weak var usernameTextField: UITextField!
@IBOutlet weak var branchNameTextField: UITextField!
@IBOutlet weak var authSSHKeyCell: UITableViewCell!
@IBOutlet weak var authPasswordCell: UITableViewCell!
let passwordStore = PasswordStore.shared
@ -51,6 +52,7 @@ class GitServerSettingTableViewController: UITableViewController {
gitURLTextField.text = url.absoluteString
}
usernameTextField.text = SharedDefaults[.gitUsername]
branchNameTextField.text = SharedDefaults[.gitBranchName]
sshLabel = authSSHKeyCell.subviews[0].subviews[0] as? UILabel
checkAuthenticationMethod(method: authenticationMethod)
authSSHKeyCell.accessoryType = .detailButton
@ -77,6 +79,7 @@ class GitServerSettingTableViewController: UITableViewController {
// try to clone
let gitRepostiroyURL = gitURLTextField.text!.trimmed
let username = usernameTextField.text!
let branchName = branchNameTextField.text!
let auth = authenticationMethod
SVProgressHUD.setDefaultMaskType(.black)
@ -100,6 +103,7 @@ class GitServerSettingTableViewController: UITableViewController {
do {
try self.passwordStore.cloneRepository(remoteRepoURL: URL(string: gitRepostiroyURL)!,
credential: gitCredential,
branchName: branchName,
requestGitPassword: self.requestGitPassword,
transferProgressBlock: { (git_transfer_progress, stop) in
DispatchQueue.main.async {
@ -114,6 +118,7 @@ class GitServerSettingTableViewController: UITableViewController {
DispatchQueue.main.async {
SharedDefaults[.gitURL] = URL(string: gitRepostiroyURL)
SharedDefaults[.gitUsername] = username
SharedDefaults[.gitBranchName] = branchName
SharedDefaults[.gitAuthenticationMethod] = auth
SVProgressHUD.dismiss()
let savePassphraseAlert = UIAlertController(title: "Done", message: "Do you want to save the Git credential password/passphrase?", preferredStyle: UIAlertControllerStyle.alert)