Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
db6c2c8
README: Update outdated repo URL (#1946)
rodrigobdz Jul 19, 2018
eb19255
Initial ContextMenu cells made accessibility buttons (#1951)
telip007 Jul 20, 2018
bd6bbe2
Add space when replying to issue comment (#1959)
rodrigobdz Jul 21, 2018
0358f1e
[Settings] [Issue #1927] Added Rate on App Store cell (#1939)
Huddie Jul 22, 2018
d1ffd0b
[Issue#1579] login animation (#1977)
YuryBogdanov Jul 26, 2018
765ee24
Fix(Scroll to top of list on tap of tabbar item) (#1974)
telip007 Jul 26, 2018
f4ed93e
Don’t send haptic if it’s already marked as read (#1917)
maniramezan Jul 26, 2018
e56c29a
Redesigned Issues interface (#1983)
rnystrom Jul 27, 2018
5ead951
Milestone without description decoding (#1986)
BasThomas Jul 27, 2018
813e091
[Issue #1923] Added color to constrastContext struct (#1938)
Huddie Jul 28, 2018
4d0644e
Fix indentation from 813e09199638cbde7405fe596568ef0df9886840
BasThomas Jul 28, 2018
b37db3a
restore system color divider line for ipad (#1989)
rnystrom Jul 28, 2018
ae81a20
More top padding for root comment (#1991)
rnystrom Jul 28, 2018
5cf3a7c
More granular messaging and controls for merge state (#1993)
rnystrom Jul 28, 2018
120d6a8
fix webview background color on iOS 12 (#1997)
rnystrom Jul 28, 2018
2abec91
Make inbox buttons more tappable (#1990)
rnystrom Jul 28, 2018
f02831d
more padding above merge unit (#1994)
rnystrom Jul 28, 2018
ee7b37b
fix label and people selection states (#1995)
rnystrom Jul 28, 2018
88da62a
improved review prompt, open to write action (#1998)
rnystrom Jul 29, 2018
93d9933
more height on "view files" unit (#1999)
rnystrom Jul 29, 2018
27ebb18
improved send UI, quieter merge buttons (#2001)
rnystrom Jul 29, 2018
8ee644b
Add animation when marking read (#2002)
rnystrom Jul 29, 2018
5070f60
replace signature with badge (#2003)
rnystrom Jul 29, 2018
e5e31bc
Better bookmark assets (#2004)
rnystrom Jul 29, 2018
7fb7274
dont show menu button if no actions (#2033)
rnystrom Aug 4, 2018
436d4f5
Use latest account when switching (#2032)
rnystrom Aug 4, 2018
04fb9ce
fix selection overlay disabling buttons (#2030)
rnystrom Aug 4, 2018
a29d34b
Fixed badge alignment (#2018)
rnystrom Aug 4, 2018
a86141b
more hit area with more button (#2017)
rnystrom Aug 4, 2018
05b3829
improved send icon, better read animation (#2016)
rnystrom Aug 4, 2018
ade56a8
Fix preferredContentSizeCategory called on background thread issue (#…
ismetanin Aug 5, 2018
d5b5381
update Tabman (#2036)
rnystrom Aug 5, 2018
cb18bf3
Smaller send button and blue (#2035)
rnystrom Aug 5, 2018
a23e756
Prevent crash when checkbox range oob (#2034)
rnystrom Aug 5, 2018
e6a83f8
warm code block caches (#2039)
rnystrom Aug 5, 2018
4be9a93
Add insets to readme (#2038)
rnystrom Aug 5, 2018
fe5ec6a
updates/tests detectShortlink method (#1971)
BrianLitwin Aug 5, 2018
0aecf43
Update Squawk to fix crash (#2040)
rnystrom Aug 5, 2018
78432b3
add gradient to mergeButton (#2049)
BrianLitwin Aug 7, 2018
78760de
Resign keyboard (#2050)
Huddie Aug 7, 2018
38023e8
Add tabBarController selectedIndex updating (#2058)
ismetanin Aug 7, 2018
8a8da14
new send button position (#2066)
rnystrom Aug 9, 2018
04667f6
Security FAQ (#2069)
Aug 10, 2018
ee84943
Resign keyboard merge (#2071)
Huddie Aug 10, 2018
6e1b004
Resign keyboard search (#2077)
Huddie Aug 10, 2018
6b42450
lines up contextMenu labels (#2082)
BrianLitwin Aug 10, 2018
e5cac53
mergeButton background bug fix (#2078)
BrianLitwin Aug 11, 2018
af4e0f8
Choose double tap (#2022)
Huddie Aug 11, 2018
28b76e6
Clean up reactions settings (#2084)
rnystrom Aug 11, 2018
7d3298a
disable the send button when text is empty (#2088)
rnystrom Aug 11, 2018
568bdd0
Revert "update Tabman (#2036)" (#2087)
rnystrom Aug 11, 2018
fadf071
Repo PRs render PR icon, more whitespace (#2089)
rnystrom Aug 11, 2018
70f87a8
bump mentionable user count (#2091)
rnystrom Aug 11, 2018
482ddf3
strip signature when editing (#2090)
rnystrom Aug 11, 2018
ca93113
reorder setup page (#2086)
BrianLitwin Aug 11, 2018
e2b967b
Switches share style, fix default reaction padding (#2095)
rnystrom Aug 12, 2018
11f1ece
Update MessageViewController (#2104)
rnystrom Aug 13, 2018
7ebfbcf
no actions available when no permissions (#2103)
rnystrom Aug 13, 2018
827a9cd
Fix bug where table cells wrap when cell collapsed (#2111)
rnystrom Aug 13, 2018
cd16250
Update Contributors section with high-pri needs (#2110)
rnystrom Aug 13, 2018
f619a25
Changing accounts resets to main tab fix (#2114)
ismetanin Aug 14, 2018
e738618
Reactions with ContextMenu (#2112)
rnystrom Aug 14, 2018
88d5fa7
fix action delay with reactions menu (#2121)
rnystrom Aug 15, 2018
398edf2
Resign keyboard on transition (#2122)
BrianLitwin Aug 16, 2018
868dcca
Fix cell size on the Bookmarks tab (#2124)
ismetanin Aug 16, 2018
65a388d
Create code of conduct (#2126)
rodrigobdz Aug 17, 2018
8a545e4
Fixed s/nuber/number/ typo in SECURITY.md (#2130)
hborders Aug 19, 2018
143ed3b
Add issue template for feature request (#2132)
rodrigobdz Aug 20, 2018
fc619eb
Add issue template for bug report (#2131)
rodrigobdz Aug 20, 2018
be79f4c
bump version to 1.23 (#2143)
rnystrom Aug 26, 2018
5c6d48b
Replace "Inbox Zero" functionality and remove Firebase (#2142)
rnystrom Aug 26, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
35 changes: 35 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
---
name: Bug report
about: Create a report to help us improve

---

**Describe the bug**
A clear and concise description of what the bug is.

**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**Expected behavior**
A clear and concise description of what you expected to happen.

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]

**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]

**Additional context**
Add any other context about the problem here.
17 changes: 17 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
name: Feature request
about: Suggest an idea for this project

---

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.
46 changes: 46 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Contributor Covenant Code of Conduct

## Our Pledge

In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.

## Our Standards

Examples of behavior that contributes to creating a positive environment include:

* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members

Examples of unacceptable behavior by participants include:

* The use of sexualized language or imagery and unwelcome sexual attention or advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a professional setting

## Our Responsibilities

Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.

Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.

## Scope

This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at rnystrom@whoisryannystrom.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.

Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]

[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/
1 change: 1 addition & 0 deletions Classes/Bookmark/BookmarkNavigationController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ final class BookmarkNavigationController {
item.target = self
item.action = selector
item.isEnabled = true
item.width = 0
}

//for timeframe between viewDidLoad() and bookmark info is loaded
Expand Down
2 changes: 1 addition & 1 deletion Classes/Bookmark/BookmarkSectionController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ final class BookmarkSectionController: ListGenericSectionController<BookmarkView

return CGSize(
width: width,
height: max(object.text.viewSize(in: width).height, Styles.Sizes.tableCellHeightLarge)
height: max(object.text.viewSize(in: width).height, Styles.Sizes.tableCellHeight + Styles.Sizes.rowSpacing * 2)
)
}

Expand Down
8 changes: 7 additions & 1 deletion Classes/Bookmark/BookmarkViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,11 @@ TabNavRootViewControllerType {
collectionView.collectionViewLayout.invalidateForOrientationChange()
}
}

override func viewWillDisappear(_ animated: Bool) {
searchBar.resignFirstResponder()
}


private func update(animated: Bool) {
adapter.performUpdates(animated: animated)
Expand Down Expand Up @@ -148,14 +153,15 @@ TabNavRootViewControllerType {
}

func didDelete(bookmarkSectionController: BookmarkSectionController, viewModel: BookmarkViewModel) {
searchBar.resignFirstResponder()
bookmarkStore.remove(viewModel.bookmark)
update(animated: true)
}

// MARK: ListAdapterDataSource

func objects(for listAdapter: ListAdapter) -> [ListDiffable] {
let contentSizeCategory = UIApplication.shared.preferredContentSizeCategory
let contentSizeCategory = UIContentSizeCategory.preferred
let width = view.bounds.width
var bookmarks: [ListDiffable]
switch state {
Expand Down
6 changes: 3 additions & 3 deletions Classes/Issues/Assignees/IssueAssigneeSummaryCell.swift
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ final class IssueAssigneeSummaryCell: UICollectionViewCell, UICollectionViewData
label.textColor = Styles.Colors.Gray.light.color
contentView.addSubview(label)
label.snp.makeConstraints { make in
make.centerY.equalTo(contentView)
make.left.equalTo(contentView)
make.centerY.equalToSuperview()
make.left.equalToSuperview()
}

collectionView.backgroundColor = .clear
Expand All @@ -44,7 +44,7 @@ final class IssueAssigneeSummaryCell: UICollectionViewCell, UICollectionViewData
contentView.addSubview(collectionView)
collectionView.snp.makeConstraints { make in
make.left.equalTo(label.snp.right).offset(Styles.Sizes.columnSpacing)
make.top.bottom.right.equalTo(contentView)
make.top.bottom.right.equalToSuperview()
}
}

Expand Down
6 changes: 3 additions & 3 deletions Classes/Issues/Assignees/IssueAssigneeUserCell.swift
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ final class IssueAssigneeUserCell: UICollectionViewCell, ListBindable {

contentView.addSubview(imageView)
imageView.snp.makeConstraints { make in
make.centerY.equalTo(contentView)
make.left.equalTo(contentView)
make.centerY.equalToSuperview()
make.left.equalToSuperview()
make.size.equalTo(Styles.Sizes.icon)
}

Expand All @@ -38,7 +38,7 @@ final class IssueAssigneeUserCell: UICollectionViewCell, ListBindable {
label.backgroundColor = .clear
contentView.addSubview(label)
label.snp.makeConstraints { make in
make.centerY.equalTo(contentView)
make.centerY.equalToSuperview()
make.left.equalTo(imageView.snp.right).offset(Styles.Sizes.columnSpacing)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ final class IssueTargetBranchSectionController: ListSectionController {
override func didUpdate(to object: Any) {
guard let object = object as? IssueTargetBranchModel else { return }
self.object = object
inset = UIEdgeInsets.zero
}

override func sizeForItem(at index: Int) -> CGSize {
Expand Down
4 changes: 1 addition & 3 deletions Classes/Issues/Branches/IssueTargetBranchModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,7 @@ final class IssueTargetBranchModel: ListDiffable {

self.targetBranchText = StyledTextRenderer(
string: builder.build(),
contentSizeCategory: .small,
inset: .zero,
backgroundColor: Styles.Colors.background
contentSizeCategory: .small
).warm(width: width)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ final class IssueCommentCodeBlockCell: IssueCommentBaseCell, ListBindable {
)
static let textViewInset = UIEdgeInsets(
top: Styles.Sizes.rowSpacing,
left: Styles.Sizes.commentGutter,
left: Styles.Sizes.columnSpacing,
bottom: Styles.Sizes.rowSpacing,
right: Styles.Sizes.commentGutter
right: Styles.Sizes.columnSpacing
)

let textView = StyledTextView()
Expand Down
56 changes: 16 additions & 40 deletions Classes/Issues/Comments/Details/IssueCommentDetailCell.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ import SDWebImage
import DateAgo

protocol IssueCommentDetailCellDelegate: class {
func didTapMore(cell: IssueCommentDetailCell, sender: UIView)
func didTapProfile(cell: IssueCommentDetailCell)
}

Expand All @@ -25,7 +24,7 @@ final class IssueCommentDetailCell: IssueCommentBaseCell, ListBindable {
private let loginLabel = UILabel()
private let dateLabel = ShowMoreDetailsLabel()
private let editedLabel = ShowMoreDetailsLabel()
private let moreButton = UIButton()
private let badgeView = IssueDetailBadgeView()
private var login = ""

override init(frame: CGRect) {
Expand All @@ -42,7 +41,7 @@ final class IssueCommentDetailCell: IssueCommentBaseCell, ListBindable {
contentView.addSubview(imageView)
imageView.snp.makeConstraints { make in
make.size.equalTo(Styles.Sizes.avatar)
make.left.equalTo(Styles.Sizes.commentGutter)
make.left.equalToSuperview()
make.top.equalTo(Styles.Sizes.rowSpacing)
}

Expand All @@ -55,57 +54,39 @@ final class IssueCommentDetailCell: IssueCommentBaseCell, ListBindable {
)
contentView.addSubview(loginLabel)
loginLabel.snp.makeConstraints { make in
make.bottom.equalTo(imageView.snp.centerY)
make.centerY.equalTo(imageView)
make.left.equalTo(imageView.snp.right).offset(Styles.Sizes.columnSpacing)
}

dateLabel.font = Styles.Text.secondary.preferredFont
dateLabel.textColor = Styles.Colors.Gray.light.color
contentView.addSubview(dateLabel)
dateLabel.snp.makeConstraints { make in
make.left.equalTo(loginLabel)
make.top.equalTo(loginLabel.snp.bottom)
}

moreButton.setImage(UIImage(named: "bullets")?.withRenderingMode(.alwaysTemplate), for: .normal)
moreButton.contentVerticalAlignment = .center
moreButton.contentHorizontalAlignment = .right
moreButton.imageView?.contentMode = .center
moreButton.tintColor = Styles.Colors.Gray.light.color
moreButton.addTarget(self, action: #selector(IssueCommentDetailCell.onMore(sender:)), for: .touchUpInside)
moreButton.accessibilityLabel = Constants.Strings.moreOptions
contentView.addSubview(moreButton)
moreButton.snp.makeConstraints { make in
make.size.equalTo(Styles.Sizes.buttonMin)
make.centerY.equalTo(imageView)
make.right.equalTo(-Styles.Sizes.commentGutter)
make.centerY.equalTo(loginLabel)
make.right.equalToSuperview()
}

editedLabel.font = Styles.Text.secondary.preferredFont
editedLabel.textColor = Styles.Colors.Gray.light.color
contentView.addSubview(editedLabel)
editedLabel.snp.makeConstraints { make in
make.left.equalTo(dateLabel.snp.right).offset(Styles.Sizes.inlineSpacing)
make.left.equalTo(loginLabel.snp.right).offset(Styles.Sizes.columnSpacing/2)
make.centerY.equalTo(loginLabel)
}

contentView.addSubview(badgeView)
badgeView.snp.makeConstraints { make in
make.centerY.equalTo(dateLabel)
make.right.equalTo(-40)
}
}

required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}

// MARK: Public API

func setBorderVisible(_ visible: Bool) {
border = visible ? .head : .neck
}

// MARK: Private API

@objc func onMore(sender: UIButton) {
delegate?.didTapMore(cell: self, sender: sender)
}

@objc func onTapAvatar() {
delegate?.didTapProfile(cell: self)
}
Expand All @@ -119,21 +100,16 @@ final class IssueCommentDetailCell: IssueCommentBaseCell, ListBindable {
func bindViewModel(_ viewModel: Any) {
guard let viewModel = viewModel as? IssueCommentDetailsViewModel else { return }

backgroundColor = viewModel.didAuthor
? Styles.Colors.Blue.light.color
: .white

imageView.sd_setImage(with: viewModel.avatarURL)
dateLabel.setText(date: viewModel.date)
dateLabel.setText(date: viewModel.date, format: .short)
loginLabel.text = viewModel.login
badgeView.isHidden = !viewModel.sentWithGitHawk

if let editedLogin = viewModel.editedBy, let editedDate = viewModel.editedAt {
editedLabel.isHidden = false

let editedByNonOwner = NSLocalizedString("Edited by %@", comment: "")
let editedByOwner = NSLocalizedString("Edited", comment: "")
let format = viewModel.login != editedLogin ? editedByNonOwner : editedByOwner
editedLabel.text = "\(Constants.Strings.bullet) \(String(format: format, editedLogin))"
let edited = NSLocalizedString("edited", comment: "")
editedLabel.text = "\(Constants.Strings.bullet) \(edited)"

let detailFormat = NSLocalizedString("%@ edited this issue %@", comment: "")
editedLabel.detailText = String(format: detailFormat, arguments: [editedLogin, editedDate.agoString(.long)])
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,21 +17,24 @@ final class IssueCommentDetailsViewModel: ListDiffable {
let didAuthor: Bool
let editedBy: String?
let editedAt: Date?
let sentWithGitHawk: Bool

init(
date: Date,
login: String,
avatarURL: URL,
didAuthor: Bool,
editedBy: String?,
editedAt: Date?
editedAt: Date?,
sentWithGitHawk: Bool
) {
self.date = date
self.login = login
self.avatarURL = avatarURL
self.didAuthor = didAuthor
self.editedBy = editedBy
self.editedAt = editedAt
self.sentWithGitHawk = sentWithGitHawk
}

func diffIdentifier() -> NSObjectProtocol {
Expand Down
Loading