Commit graph

2511 commits

Author SHA1 Message Date
SBiOSoftWhare
883f2902a9 Move coordinator delegates definitions in coordinator protocols definitions 2019-01-22 17:31:40 +01:00
SBiOSoftWhare
3c546ba6fc Update some copyright years 2019-01-22 17:20:28 +01:00
manuroe
c7552f4ad9 BF: Ban and kick reasons are silently discarded
#2162
2019-01-22 17:18:42 +01:00
manuroe
58fcdc7421
Update Riot/Modules/Common/KeyboardAvoiding/KeyboardAvoider.swift
Co-Authored-By: SBiOSoftWhare <SBiOSoftWhare@users.noreply.github.com>
2019-01-22 17:14:11 +01:00
SBiOSoftWhare
06f8297ee4 Fix typo in UIView extension 2019-01-22 17:09:15 +01:00
SBiOSoftWhare
240d83e281 Update reveal password margin on KeyBackupSetupPassphraseViewController 2019-01-22 15:46:26 +01:00
SBiOSoftWhare
71cc499503 Update ActivityIndicatorView and ActivityIndicatorPresenter to match activity indicator UI in MXKViewController 2019-01-22 15:26:34 +01:00
SBiOSoftWhare
735e2e44c2 Handle key backup setup navigation flow with KeyBackupSetupCoordinator 2019-01-22 11:05:48 +01:00
SBiOSoftWhare
d4d551bea1 Implement key backup setup recovery key scene with view controller, view model and coordinator 2019-01-22 11:04:06 +01:00
SBiOSoftWhare
2cbd85fa89 Implement key backup setup passphrase scene with view controller, view model, coordinator 2019-01-22 10:25:36 +01:00
SBiOSoftWhare
78a5cf0b8b Create key back setup intro view controller 2019-01-22 10:05:57 +01:00
SBiOSoftWhare
9703cdfd11 Create KeyboardAvoider that help to avoid keyboard overlap with scroll view content. 2019-01-22 00:18:54 +01:00
SBiOSoftWhare
3591f4a416 Create ActivityIndicatorView in order to wrap activity indicator customization and create ActivityIndicatorPresenter in order to manage activity indicator presentation. 2019-01-22 00:15:20 +01:00
fridtjof
bb8d7bae64
MasterTabBarController: Use @available instead of instancesRespondToSelector 2019-01-18 18:09:31 +01:00
manuroe
9371f0e1cb reskin: kill riotColorRed & riotColorPinkRed
Merge them into Theme.warningColor

Part of #2174
2019-01-18 13:40:09 +01:00
manuroe
40ef4d5f64 Registration: improve scrolling on the reCaptcha screen
#2165
2019-01-17 16:02:55 +01:00
manuroe
4e1736b9d4 Reskin: Fix regression: Wrong status bar color on login/registration screens
#2184
2019-01-17 15:35:40 +01:00
manuroe
6da0bfd07f Registration: improve validation UX on the terms screen
#2164

Do like on android (https://github.com/vector-im/riot-ios/issues/2164#issuecomment-455108199)
2019-01-17 12:04:42 +01:00
manuroe
c88676018b BF: Registration: fix tap gesture on checkboxes in the terms screen 2019-01-17 11:59:21 +01:00
manuroe
6e4a7224bf reskin: Kill KVO on theme setting 2019-01-14 10:53:43 +01:00
manuroe
c9965ab700 reskin: Fix theming in registration screens 2019-01-11 16:52:28 +01:00
manuroe
c61144cf78 reskin: Theme: rename colors as it is in the palette now 2019-01-11 13:13:31 +01:00
manuroe
93b01f9e17 reskin: Fix color of display name in RoomMemberDetailsVC 2019-01-11 12:55:23 +01:00
manuroe
403a09dc26 reskin: kill ThemeService.kRiotRoomXxxxLevel 2019-01-11 12:43:47 +01:00
manuroe
6eeef644d3 reskin: Kill kRiotColorXxxx 2019-01-11 11:57:02 +01:00
manuroe
744208ae25 reskin: Create ThemeService.shared 2019-01-11 11:45:27 +01:00
manuroe
b3b6e2c80c reskin: Rename RiotDesignValues -> ThemeService 2019-01-11 10:46:00 +01:00
manuroe
bfa3eccacf reskin: kill last customisable kRiotXColors 2019-01-10 18:47:49 +01:00
manuroe
19ebc9317b reskin: kill headerTextSecondaryColor 2019-01-10 18:10:10 +01:00
manuroe
373be3b64c reskin: kill kRiotTopicTextColor 2019-01-10 18:08:10 +01:00
manuroe
dfecc403ec reskin: kill kRiotSecondaryTextColor 2019-01-10 18:05:21 +01:00
manuroe
52869d8c05 reskin: kill kRiotPrimaryTextColor 2019-01-10 18:00:45 +01:00
manuroe
39ffac13b1 reskin: kill kRiotSecondaryBgColor 2019-01-10 17:57:17 +01:00
manuroe
21a9a7c9f3 reskin: kill kRiotPrimaryBgColor 2019-01-10 17:50:26 +01:00
manuroe
da0b5d7d56 reskin: Kill RiotDesignValues.kRiotKeyboard and replace it by Theme.keyboardAppearance 2019-01-10 17:42:43 +01:00
manuroe
8b47ac54ca reskin: Kill RiotDesignValues.kRiotKeyboardColor and replace it by Theme.matrixSearchBackgroundImageTintColor 2019-01-10 17:36:36 +01:00
manuroe
91e20b59a5 reskin: remove bar style ivars from RiotDesignValues 2019-01-10 17:08:32 +01:00
manuroe
5cf4eb0bdc reskin: Delegate navigation and search bars styling to theme 2019-01-10 16:43:03 +01:00
manuroe
eca85776a1 reskin: rename ColorValues to Theme 2019-01-10 15:32:59 +01:00
manuroe
6f30f88b03 reskin: ColorValues: suffix UIColor properties names with "Color" 2019-01-10 15:23:22 +01:00
manuroe
e66ffe4cb2 reskin: Put back riot colors in the main tab bar icons 2019-01-10 15:12:24 +01:00
manuroe
4aba851079 reskin: Fix header display of room preview 2019-01-10 14:47:58 +01:00
manuroe
cecba319cf Merge remote-tracking branch 'origin/develop' into reskin
# Conflicts:
#	Riot/Constants/RiotDesignValues.m
#	Riot/Modules/Authentication/AuthenticationViewController.m
2019-01-10 11:50:57 +01:00
manuroe
d7c3eef632 Merge remote-tracking branch 'origin/develop' into reskin 2019-01-09 16:38:49 +01:00
fridtjof
c7fbca7698
make use of Obj-C's modern syntax for literals and subscripting 2019-01-08 00:24:11 +01:00
fridtjof
8291c99542
fix almost all the warnings caused by -Wstrict-prototypes 2019-01-05 03:28:53 +01:00
manuroe
db0a1b8864 reskin: Fix display of RoomMemberDetailsVC header.
Apply the same logic as in RoomVC in the previous commit
2018-12-28 17:54:19 +01:00
manuroe
fc86a37d11 reskin: Improve a bit RoomVC expanded header display
RoomVC is displayed in another UINavigationController. Its bar can be translucent. Then, we just need to make sure that the main UINavigationController navigationBar is translucent when displaying the expanded header.

Note: there is a UI glitch when navigating back when the expanded header is displayed but that bug existed before (in v0.7.8)
2018-12-28 17:52:45 +01:00
manuroe
8f9af0ea1f BF: Registration: email or phone number is no more skippable
#2140

Note: There is no more conditions linked to kMXLoginFlowTypeRecaptcha in the code, which makes it look more flexible.
2018-12-28 09:19:14 +01:00
manuroe
2edf1d88a9 reskin: Fix display of expanded header in Room VC 2018-12-28 09:16:24 +01:00
manuroe
bf418edf03 BF: Registration: email or phone number is no more skippable
#2140

Note: There is no more conditions linked to kMXLoginFlowTypeRecaptcha in the code, which makes it look more flexible.
2018-12-27 11:56:00 +01:00
manuroe
2041f6b4e1 Reskin: New TermsView screen 2018-12-21 11:41:43 +01:00
manuroe
b40f9e88ae Merge remote-tracking branch 'origin/develop' into reskin 2018-12-21 09:15:06 +01:00
manuroe
9aff401878 Registration: reCAPTCHA does not work anymore on iOS 10
#2119
2018-12-11 17:46:09 +01:00
manuroe
5c3b5aceb4 Reskin: Apply RiotDesignValues.colorValues.accent on swith buttons 2018-12-03 18:02:02 +01:00
manuroe
c4b6cfdaf4 Reskin: Paint icons with RiotDesignValues.colorValues.accent when possible 2018-12-03 17:14:32 +01:00
manuroe
a50c9f55b1 Reskin: Kill kRiotColorGreen and use RiotDesignValues.colorValues.accent instead 2018-11-30 17:10:28 +01:00
manuroe
ac08e7670a Reskin: Change the 2 notifications colors 2018-11-30 16:36:34 +01:00
manuroe
6b1e5c6086 Reskin:Create [RiotDesignValues applyStyleOnSearchBar:] and use it 2018-11-30 15:57:19 +01:00
manuroe
1ec4c702d3 Reskin: Use current style color constants for section headers 2018-11-30 15:27:13 +01:00
manuroe
d996dab096 Login flow: Fix Steve's remarks 2018-11-30 12:42:31 +01:00
manuroe
d2d401ed8b Reskin: Factorise *RoomTitleViews
and apply them kRiotDesignNavigationBarBarTintColor as background color to mimic the nav bar color
2018-11-29 17:47:42 +01:00
manuroe
6f98822179 Reskin: Use the new [RiotDesignValues applyStyleOnNavigationBar:] method everywhere
Note that we do not change anymore the bar tint color when changing tabs. This is alwasy the same.
2018-11-29 17:31:41 +01:00
manuroe
1108d8a1ac Reskin: RiotDesignValues: Make use of the new ColorValues 2018-11-29 16:20:20 +01:00
manuroe
8d20e326ad Login flow: Make User Agreement part of the registration flow
Some fixes
2018-11-27 18:36:06 +01:00
manuroe
84ce5374e6 AuthInputsView: Refactor a bit updateAuthSessionWithCompletedStages 2018-11-27 17:06:30 +01:00
manuroe
8b11786109 Login flow: Make User Agreement part of the registration flow
#1939
2018-11-27 16:22:33 +01:00
manuroe
55e10bdcf7 Login flow: Make more usage of the isFlowCompleted: method 2018-11-27 11:20:17 +01:00
manuroe
9f500ac1fc Login flow: Add generic isFlowSupported: and isFlowCompleted: methods 2018-11-27 11:20:17 +01:00
Giom Foret
ddc3927c0d Fix a race condition observed when the app renders an image in a Group/Community description 2018-11-13 17:30:37 +01:00
Giom Foret
0d0fec8748 Move MXStrongifyAndReturnValueIfNil(self, nil); at the beginning of the block. 2018-11-13 16:12:54 +01:00
Giom Foret
a47c867667 Remove all deprecated methods 2018-11-13 00:08:35 +01:00
Giom Foret
3258e3abc1 MXImageView: use the new interface [setImageURI:...] instead of the deprecated one [setImageURL:...] .
Note - DirectoryServerTableViewCell:
Presently the thirdPartyProtocolInstance.icon is not a Matrix Content URI. We could not use here MXKImageView setImageURI method
 without breaking the instance icon rendering. We use the deprecated interface until this point is fixed on the server side.
2018-11-11 15:20:32 +01:00
Giom Foret
d40d40068e Replace the deprecated MXMediaManager and MXMediaLoader interfaces use 2018-11-10 14:28:08 +01:00
manuroe
1342637cc6
Merge pull request #2067 from aaronraimist/password-autofill
Add UITextContentType values to AuthInputsView
2018-10-31 12:04:20 +01:00
Aaron Raimist
c0c1e8a1c6
Remove all calls of [NSUserDefaults synchronize] (#1924)
Signed-off-by: Aaron Raimist <aaron@raim.ist>
2018-10-15 16:58:10 -05:00
Aaron Raimist
f93759f612
Add UITextContentType values to AuthInputsView
Improves #2066

Signed-off-by: Aaron Raimist <aaron@raim.ist>
2018-10-06 14:45:16 -05:00
manuroe
c13fb587ca Server Quota Notices: Implement the blue banner
Fix Steves's remark
2018-10-04 18:37:25 +02:00
manuroe
d867c89c3b Server Quota Notices: Implement the blue banner
Closes #1937
2018-10-02 15:30:00 +02:00
manuroe
8be6f2957d SettingsVC: Use MXKAccount method to determine if LL is supported by the HS 2018-09-25 11:20:50 +02:00
manuroe
523ed24950 BF: Weird text color when selecting a message
#2046
2018-09-24 14:23:48 +02:00
manuroe
3f40b1c804 Room settings: Anyone can now set a room alias
Fix #2033
2018-09-21 16:23:32 +02:00
manuroe
e129e37fa4 Make code use the "Empty room" i18n string from MatrixKit 2018-09-20 11:05:46 +02:00
manuroe
9ce597ea43 Bug Report: Report the member lazy-loading setting
like on Android
2018-09-13 17:22:09 +02:00
manuroe
60e07e1be6 Lazy-Loading: Fix missing read receipts 2018-09-13 17:12:53 +02:00
SBiOSoftWhare
64bab44bfe Make advanced info copyable in settings 2018-09-06 11:32:55 +02:00
SBiOSoftWhare
5802a3d8d5
Merge pull request #1999 from daverPL/made_cryptography_info_copyable
Made cryptography info copyable (#1915)
2018-09-06 11:08:59 +02:00
SBiOSoftWhare
402cadf579 Fix interaction disabled on RecentsViewController when presenting a room. 2018-08-27 17:15:33 +02:00
SBiOSoftWhare
7a4a68a998 Add a selectRoomWithId:andEventId:inMatrixSession: method with completion block on MasterTabController. 2018-08-27 17:14:28 +02:00
SBiOSoftWhare
011a878f86 Fix roomInputToolbar reset (cleared text, black avatar, wrong e2e icon) in RoomViewController when MXSession state change. 2018-08-27 15:32:37 +02:00
Dawid Raczka
559b089b2d Fix of cell style in different themes. 2018-08-24 16:09:00 +01:00
manuroe
2036ec1d3c MAU: Fix text font in red banner 2018-08-24 17:05:22 +02:00
manuroe
ce791def2c Recents: Avoid to open a room twice
It crashed on room creation on quick HSes
2018-08-24 14:45:12 +02:00
Dawid Raczka
86ba03660c Made data in cryptography info copyable. 2018-08-23 18:10:42 +01:00
manuroe
8abffc1120
Merge pull request #1993 from vector-im/riot_1937_2_bis
RoomVC: Show a "Resource Limit Exceeded" banner
2018-08-23 15:27:55 +00:00
manuroe
9ef3ec3516 RoomVC: Show a "Resource Limit Exceeded" banner if it happens in a /sync response
Hide the text composer too.
2018-08-23 17:03:32 +02:00
manuroe
402c02be24 Recents: Recognise server notices room(s) and put them in the dedicated section
https://github.com/vector-im/riot-ios/issues/1937
2018-08-23 16:50:14 +02:00
manuroe
98790334ee
Merge pull request #1990 from vector-im/settings_labs_ll
Lazy-loading: Make "Settings > LABS > Enable LL" back
2018-08-22 14:03:12 +00:00
manuroe
c3d224bf45 Lazy-loading: Make "Settings > LABS > Enable LL" back
It uses /versions this time to check LL availability on the HS
2018-08-22 12:05:29 +02:00
manuroe
a07d836240 RoomVC: Show a "Resource Limit Exceeded" banner if it happens in a /sync response
#1937
2018-08-21 18:25:56 +02:00
manuroe
65704002ec AuthenticationVC: Show a "Resource Limit Exceeded" popup if it happens server side
#1937
2018-08-20 18:30:50 +02:00
manuroe
fab7f1ed91
Merge pull request #1969 from vector-im/riot_1967
BF: Multiple rooms can be opened
2018-08-10 09:18:07 +00:00
manuroe
3668435d6f BF: Multiple rooms can be opened
Update following Steve's comment
2018-08-10 11:06:25 +02:00
manuroe
6ce2818fc0
Merge pull request #1968 from vector-im/fix_room_opening
Lazy-loading: Fix a regression when opening a room where we can see the Riot logo in bg
2018-08-10 08:31:14 +00:00
SBiOSoftWhare
af60ba8ea5
Merge branch 'develop' into riot_1952 2018-08-10 10:19:54 +02:00
manuroe
e28fddda63 BF: Multiple rooms can be opened
#1967
2018-08-10 10:15:02 +02:00
SBiOSoftWhare
a9ab11b935 GDPRConsentViewController now do not take into account HS hostname to determine if user consent to GDPR. 2018-08-09 18:56:40 +02:00
manuroe
2d15485137 Lazy-loading: Fix a regression when opening a room where we can see the Riot logo in bg
Video at
https://matrix.to/#/!DdJkzRliezrwpNebLk:matrix.org/$1533808423412ynHll:matrix.org
2018-08-09 16:30:31 +02:00
SBiOSoftWhare
1b0c481d59 Now use GDPRConsentViewController in AppDelegate in order to present GDPR consent and dismiss controller automatically when accept consent. 2018-08-09 12:19:24 +02:00
SBiOSoftWhare
bfd14a5933 Create GDPRConsentViewController 2018-08-09 12:19:24 +02:00
manuroe
ee2a348a3a Settings: Disable "Labs > Enable LL" for the coming release 2018-08-09 10:56:09 +02:00
manuroe
4b1c17b747 Chat screen: Add "view decrypted source" option on the selected event
#1642
2018-08-08 16:14:56 +02:00
manuroe
7e0f755440 MXKRoomDataSourceManager: closeRoomDataSource has been replaced by closeRoomDataSourceWithRoomId. 2018-08-08 10:33:10 +02:00
manuroe
1ed670e1c3 Fix compilation issue while merging room versioning and lazy_loading 2018-08-07 18:20:22 +02:00
manuroe
0556ef2ee2 Merge remote-tracking branch 'origin/develop' into lazy_loading
# Conflicts:
#	CHANGES.rst
#	Riot/Modules/Room/RoomViewController.m
2018-08-07 18:06:58 +02:00
SBiOSoftWhare
11fc687897 [RoomViewController] Now use RoomPredecessorBubbleCell to display room predecessor informations. 2018-08-07 11:27:37 +02:00
SBiOSoftWhare
0ab7da2539 Create RoomPredecessorBubbleCell in order to display room predecessor info when needed 2018-08-07 11:26:35 +02:00
SBiOSoftWhare
32467af2ed [RoomBubbleCellData] Update way to put tag `RoomBubbleCellDataTagRoomCreateWithPredecessor 2018-08-07 11:25:04 +02:00
SBiOSoftWhare
62a443f6b0 [RoomViewController] Fix a crash when user highlight a message and write to room is forbidden. 2018-08-06 14:08:28 +02:00
manuroe
969cb79fad Lazy-loading: Fix search display
Use profile info sent in the search response.
2018-08-03 17:01:53 +02:00
manuroe
18234ad4f9 Lazy-loading server side: Add "Settings > LABS > Lazy load rooms members" option 2018-08-02 16:29:50 +02:00
manuroe
805869eb4d Lazy-loading server side: Use MXRoomSummary.membersCount when possible 2018-08-02 11:36:40 +02:00
manuroe
0e2fde84f9 Lazy-loading server side: Use new async [MXRoom members:lazyLoadedMembers:] 2018-08-01 17:25:38 +02:00
manuroe
861c5e55e5 New async [MXRoom state:]: Fix issue using preloadRoomsData 2018-07-31 16:53:08 +02:00
SBiOSoftWhare
82fdd062b6 [RoomViewController] Use simple cell in order to display room create predecessor information 2018-07-27 18:53:51 +02:00
SBiOSoftWhare
238ed98afd [RoomBubbleCellData] Add room create with predecessor tag in order to identify this particular case 2018-07-27 18:49:36 +02:00
SBiOSoftWhare
24deeb6516 [RoomActivities] Improve display room replacement 2018-07-27 18:33:46 +02:00
SBiOSoftWhare
9fc272f612 [RoomViewController] Handle obsolete room (m.room.tombstone event type) and display replacement room in activities view 2018-07-27 11:56:51 +02:00
SBiOSoftWhare
9ed03a49e6 [RoomActivitiesView] Add room replacement display 2018-07-27 11:48:38 +02:00
SBiOSoftWhare
2a67f5fb36 Fix boolean condition when updating placholder in RoomInputToolbarView 2018-07-24 16:53:07 +02:00
SBiOSoftWhare
abb80a46f9 Fix MXKSlashCommands import from RoomViewController 2018-07-24 16:53:07 +02:00
SBiOSoftWhare
7af523af72 Update join slash command constant in RoomViewController from MXKSlashCommands 2018-07-24 16:53:07 +02:00
SBiOSoftWhare
f52121e53f [RoomViewController] Handle sending a reply by highlighting a message on timeline for supported events. 2018-07-24 16:53:06 +02:00
SBiOSoftWhare
2ec5d88d75 Add send reply mode in RoomInputToolbarView in order to update text input placeholder when sending a reply. 2018-07-24 16:53:06 +02:00
manuroe
75c0393701 New async [MXRoom state:]: Fix issue reported in Steve's review 2018-07-24 16:30:48 +02:00
SBiOSoftWhare
3a7a5c93a2 Fix boolean condition when updating placholder in RoomInputToolbarView 2018-07-24 13:32:40 +02:00
SBiOSoftWhare
20ca54f5fb Fix MXKSlashCommands import from RoomViewController 2018-07-24 13:31:37 +02:00
SBiOSoftWhare
8ab3add9cb Update join slash command constant in RoomViewController from MXKSlashCommands 2018-07-24 12:24:12 +02:00
manuroe
2a14c0fdfb New async [MXRoom state:]: Use new [MXRoom listenToEventsOfTypes:] 2018-07-23 18:14:45 +02:00
manuroe
ac0a7b048e New async [MXRoom state:]: Fix regression in MasterTabBarVC 2018-07-23 18:09:16 +02:00
SBiOSoftWhare
804d76ae92 [RoomViewController] Handle sending a reply by highlighting a message on timeline for supported events. 2018-07-23 16:56:03 +02:00
SBiOSoftWhare
1e42fc5b81 Add send reply mode in RoomInputToolbarView in order to update text input placeholder when sending a reply. 2018-07-23 16:54:23 +02:00
manuroe
ee419fb1a0 New async [MXRoom state:]: Use [MXRoom members:] 2018-07-23 15:38:50 +02:00
manuroe
0e58a385dc New async [MXRoom state:]: Use [MXSession preloadRoomsData:] 2018-07-23 14:05:18 +02:00
manuroe
239e3f9f6f New async [MXRoom state:]: MXKSearchCellDataStoring: Replace initWithSearchResult by async cellDataWithSearchResult 2018-07-20 15:27:54 +02:00
manuroe
b7352358ab New async [MXRoom state:]: Make use of MXRoom.dangerousSyncState 2018-07-20 13:38:32 +02:00
manuroe
f701e4cd3c New async [MXRoom state:]: Make Riot build 2018-07-20 11:28:02 +02:00
manuroe
100493ac37 New async [MXRoom state:]: Create async factory methods for MXKRoomDataSource 2018-07-20 11:14:49 +02:00
manuroe
2f90842345 New async [MXRoom state:]: Make Riot build 2018-07-20 10:40:42 +02:00
manuroe
f821f05f8f New async [MXRoom state:]: Make widgets build 2018-07-19 13:05:09 +02:00
manuroe
bbaca0e3df Make Riot build with new async [MXRoom liveTimeline:] 2018-07-19 09:47:34 +02:00
manuroe
e7deec57a5 Fix regression with new MXRoomMembers 2018-07-17 18:41:28 +02:00
manuroe
b79b1b0c38 MXRoomState: Apply new membership property 2018-07-17 18:00:56 +02:00
manuroe
fd6a106da6 Make use of MXRoom.summary instead of MXRooms.state 2018-07-17 17:28:32 +02:00
manuroe
b64b5767fb Make use of MXRoom.roomId and MXRoom.summary instead of MXRooms.state 2018-07-16 22:30:55 +02:00
manuroe
5a61d1c227 Use new MXRoomState.membersCount 2018-07-12 10:50:59 +02:00
manuroe
7af86d9f9d MXRoomState: Apply new MXRoomMembers property 2018-07-12 00:19:48 +02:00
SBiOSoftWhare
0e3ee5a5c8 Fix image references in xib and storyboards by removing .png suffix 2018-07-10 17:16:26 +02:00
SBiOSoftWhare
c377f5f739 Move cell data and data sources to corresponding modules. 2018-07-10 10:21:21 +02:00
SBiOSoftWhare
421e8bc84b Organize views by feature 2018-07-10 10:21:20 +02:00
SBiOSoftWhare
3f3c4f471b Structure project almost by features. Start by organizing view controllers. 2018-07-10 10:21:20 +02:00