Skip to content

Commit

Permalink
[milestone/1.2] Milestone 1.2 (#549)
Browse files Browse the repository at this point in the history
* - Fix Swift and SwiftLint warnings
- Remove unused UploadsSettingsSection (was replaced by MediaUploadSettings)

* - address libzip Xcode project upgrade warning
- add research note to FileProviderExtension
- update SDK

* [feature/multiple-windows] Multiple window support for iPadOS (#498)

* Naming improvements based on latest SDK:
- uploads use new OCCoreOptionAutomaticConflictResolutionNameStyle option to automatically resolve naming conflicts during upload
- Duplicate action uses the new OCCore name suggestion API to
	- determine naming conflicts and resolve them automatically
	- match the name style of the file to duplicate, f.ex.
		- duplicating "File copy.jpg" will create "File copy 2.jpg"
		- duplicating "File (1).jpg" will create "File (2).jpg"
		- duplicating "File Kopie 2.jpg" will create "File Kopie 3.jpg"
- folder creation uses the new OCCore name suggestion API to
	- detect naming conflicts beforehand
	- pre-fill the new folder name name with an unused name directly

* #393 added an activity indicator which will be shown, if offline copies will be deleted to give the user a UI feedback

* - Change SDK branch to master

* #76 user can import files using the iOS share sheet. all file types are accepted.

* - using new SDK with fixes for requesting core
- minor code fixes

* - Log device, version and locale information at the beginning of every log file using new SDK protocol
- Show SDK commit hash in Settings

* fixed crash, changed bookmark name to shortname

* changed UIAlertViewController for account selection to CardViewController style for testing

* fixed icon badge creation for fastlane lane In-House Enterprise IPA generation

* install librsvg for fastlane via sh

* moved import file code to own class

* added option to automatically resolve name conflicts, if file name already exists

* Changed app version to 1.1.0

* enabled beta build and warning

*  Keep the gallery alive after doing some action over an item (#447)

* Rename updates the currently visible file in the gallery

* Keeping gallery alive fix

- Don’t pop to the root view controller on destructive action by default
- Only pop to the root if all items have been deleted
- Select next item upon deletion of the current ones
- Update UIPageViewController data source if number of items changes due e.g. to duplication or deletion

* Small fixes

* Fixed review findings

* Media player implemented using AVKit (#429)

* Media player implemented using AVKit

* Added possibility to stream audio / video

* Improved error handling

* Fixed review finding

* Added background audio, airplay and PiP mode

* Propagating safe area to the main view of AVPlayerViewController

* Another fix for safe area considering layout of AVPlayerViewController

* Updated to latest develop version of SDK

* Display error message in case file couldn’t be preview e.g. due to file corruption (#427)

* Fixed UI test for creating folder, need to return a fixed name, because suggestion is not working in tests

* added a description header and changed typo

* - fixed showing the directory picker controller, after the card view was dismissed
- use the current development SDK

* Version Bump to 126

* - create local copy of import file, if needed
- fixed create folder action
- delete local copy, if needed
- code review changes

* - improved duplicate item deletion behaviour
	- add additional safeguard so duplicate files are only deleted if they were actually duplicated (previously non-duplicate files could be removed if duplication or folder creation failed)
	- remove temporary container folder, too
- add 2 second delay before returning the core to give the core an opportunity to schedule the upload on a NSURLSession

* Version Bump to 127

* changed back signing identity

* Version Bump to 128

* added required CFBundleTypeName key

* Version Bump to 129

* updated changelog

* use formSheet presentation style for the iPad when showing the document picker

* Fix for images not being displayed in the gallery

* Version Bump to 130

* Version Bump to 131

* [fix/sharing-search] Fixed min length for searching sharing users (#455)

* #454 used correct comparator for sharingSearchMinLength and set a new default value, if capability does not exists

* added a constant for defaultSharingSearchMinLength value

* - Update ios-sdk to address finding (1) in ios-app #446

* Preventing updating UI in DisplayViewController while item is being changed

- Not calling present(item:) while meta data of OCItem is being updated
- Elliminated an assumption in MediaDisplayViewController that render renderSpecificView() can be called only once.
- Making sure that AVPlayer is not re-created upon changes in OCItem but that rather AVPlayerItem is replaced.

* Fixed a small warning

* Tried to improve gallery logic concerning items modification

- Watch out if the modification does still includes the item with local ID of the currently visible item.
- Take care of failed move but watching out for reappearing items

* Added a setting allowing to decide user if media files shall be streamed

* - Add debug output to Display*ViewController
- Fix SwiftLint warnings

* Fixed handling of deleted / moved item in the gallery

* Another small fix for handling of failed item move

* Version Bump to 132

* Added LSSupportsOpeningDocumentsInPlace key to Info.plist

* Fixed Info.plist and added LSHandlerRank property

* Fix for #455 issue: no search request triggered

* show always the account selection sheet and added a note, that only one file can be imported at once

* use securtiy scoped file operation for importing a file

* Fix for the PR #447 (keep gallery alive) (#465)

* Keeping track of individual OCItems in DisplayViewController instances

But loading the list of items in the gallery only once and not reacting to any changes (moving, deleting)

* Removed query stop call in DisplayHostViewController

Since this query is not created there but just passed from the parent view.

* Removing more button if the currently viewed file got moved or deleted

* Fixed updating UI after renaming current item

* Fixed a warning

* Fixed issues in the gallery

* - Minor fixes

* first draft for supporting multiple windows

* implemented opening an account in a new window

* added row action

* - open account, now opens file list
- implemented open account from table view edit action
- implemented contextual menu for account row

* Starting implementing state restoration

* Implemented UI restoration state for window scenes

* Implemented UI state restoration for opening a OCItem

* - only show close window item on iPad
- fixed icons for location

* - only show "Open in new Window" on iPad
- better view restoration
- deselect row

* - added new menu item to open a new window
- fixed tint color for icons

* - added missing localization strings
- removed no longer needed class

* - fixed code review findings
- code refactoring

* - moved creating file list stack code into ClientRootViewController class
- added iOS 13 available query

* fixed merge error

* fixed drag and drop between accounts (when dragging items from one window to the other window on iPad)

* prevent dragging folders from one account to an other account

* [feature/docs] Docs support (#494)

* Naming improvements based on latest SDK:
- uploads use new OCCoreOptionAutomaticConflictResolutionNameStyle option to automatically resolve naming conflicts during upload
- Duplicate action uses the new OCCore name suggestion API to
	- determine naming conflicts and resolve them automatically
	- match the name style of the file to duplicate, f.ex.
		- duplicating "File copy.jpg" will create "File copy 2.jpg"
		- duplicating "File (1).jpg" will create "File (2).jpg"
		- duplicating "File Kopie 2.jpg" will create "File Kopie 3.jpg"
- folder creation uses the new OCCore name suggestion API to
	- detect naming conflicts beforehand
	- pre-fill the new folder name name with an unused name directly

* #393 added an activity indicator which will be shown, if offline copies will be deleted to give the user a UI feedback

* - Change SDK branch to master

* #76 user can import files using the iOS share sheet. all file types are accepted.

* - using new SDK with fixes for requesting core
- minor code fixes

* - Log device, version and locale information at the beginning of every log file using new SDK protocol
- Show SDK commit hash in Settings

* fixed crash, changed bookmark name to shortname

* changed UIAlertViewController for account selection to CardViewController style for testing

* fixed icon badge creation for fastlane lane In-House Enterprise IPA generation

* install librsvg for fastlane via sh

* moved import file code to own class

* added option to automatically resolve name conflicts, if file name already exists

* Changed app version to 1.1.0

* enabled beta build and warning

*  Keep the gallery alive after doing some action over an item (#447)

* Rename updates the currently visible file in the gallery

* Keeping gallery alive fix

- Don’t pop to the root view controller on destructive action by default
- Only pop to the root if all items have been deleted
- Select next item upon deletion of the current ones
- Update UIPageViewController data source if number of items changes due e.g. to duplication or deletion

* Small fixes

* Fixed review findings

* Media player implemented using AVKit (#429)

* Media player implemented using AVKit

* Added possibility to stream audio / video

* Improved error handling

* Fixed review finding

* Added background audio, airplay and PiP mode

* Propagating safe area to the main view of AVPlayerViewController

* Another fix for safe area considering layout of AVPlayerViewController

* Updated to latest develop version of SDK

* Display error message in case file couldn’t be preview e.g. due to file corruption (#427)

* Fixed UI test for creating folder, need to return a fixed name, because suggestion is not working in tests

* added a description header and changed typo

* - fixed showing the directory picker controller, after the card view was dismissed
- use the current development SDK

* Version Bump to 126

* - create local copy of import file, if needed
- fixed create folder action
- delete local copy, if needed
- code review changes

* - improved duplicate item deletion behaviour
	- add additional safeguard so duplicate files are only deleted if they were actually duplicated (previously non-duplicate files could be removed if duplication or folder creation failed)
	- remove temporary container folder, too
- add 2 second delay before returning the core to give the core an opportunity to schedule the upload on a NSURLSession

* Version Bump to 127

* changed back signing identity

* Version Bump to 128

* added required CFBundleTypeName key

* Version Bump to 129

* updated changelog

* use formSheet presentation style for the iPad when showing the document picker

* Fix for images not being displayed in the gallery

* Version Bump to 130

* Available Offline Support
- new MakeAvailableOfflineAction and MakeUnavailableOfflineAction actions
- new Available Offline Library section
	- easy access to all files available offline via Available Offline
	- new ItemPolicyTableViewController and ItemPolicyCell prepared for reuse for presenting other item policies
- Design: added SVG/TVG/PNG icons and cloud symbols for make available offline / make unavailable offline

ClientItemCell changes
- new ClientItemResolvingCell can resolve item from LocalID or path, new superclass of ShareClientItemCell and ItemPolicyCell
- string to use as content for title and detail are now provided via titleLabelString(for:) and detailLabelString(for:), updated via updateLabels(with:), making customization easier
- support for new available offline badge

ProgressSummarizer changes
- changed ProgressSummary from a struct to a class, addressing issue #451 ("Waiting for server response..." message sometimes not disappearing)

* Version Bump to 131

* [fix/sharing-search] Fixed min length for searching sharing users (#455)

* #454 used correct comparator for sharingSearchMinLength and set a new default value, if capability does not exists

* added a constant for defaultSharingSearchMinLength value

* - Update ios-sdk to address finding (1) in ios-app #446

* Preventing updating UI in DisplayViewController while item is being changed

- Not calling present(item:) while meta data of OCItem is being updated
- Elliminated an assumption in MediaDisplayViewController that render renderSpecificView() can be called only once.
- Making sure that AVPlayer is not re-created upon changes in OCItem but that rather AVPlayerItem is replaced.

* Fixed a small warning

* Tried to improve gallery logic concerning items modification

- Watch out if the modification does still includes the item with local ID of the currently visible item.
- Take care of failed move but watching out for reappearing items

* Added a setting allowing to decide user if media files shall be streamed

* - Add debug output to Display*ViewController
- Fix SwiftLint warnings

* Fixed handling of deleted / moved item in the gallery

* Another small fix for handling of failed item move

* Version Bump to 132

* Added LSSupportsOpeningDocumentsInPlace key to Info.plist

* Fixed Info.plist and added LSHandlerRank property

* Fix for #455 issue: no search request triggered

* - Adopt OCClaim to ensure files aren't deleted while they are being used in
	- DisplayViewController
	- DownloadItemsHUDViewController
	- FileListTableViewController
	- File Provider
- Add new Storage Settings to allow control over how long unused local copies are kept around
- DisplayViewController now uses OCClaims to ensure files aren't deleted while they are being viewed
- ClientItemCell uses new SDK APIs to
	- show "available offline" badges for folders
	- to indicate if an item has been made available offline directly (solid icon) or indirectly (dimmed icon)
	- keep the cloud status icon updated following changes
- Change "+" icon to "•••" icon in file list, rename plusButton to folderAction everywhere
- Action.provideAlertAction() now applies padding to images if necessary so their text aligns at the same horizontal offset
- Fix typo in BookmarkInfoViewController and change wording from "Delete Offline Copies" to "Delete Local Copies" for consistency
- Update swiftlint.yml to silence ownCloudScreenshotsTests warnings

* show always the account selection sheet and added a note, that only one file can be imported at once

* - Update ios-sdk

* use securtiy scoped file operation for importing a file

* Fix for the PR #447 (keep gallery alive) (#465)

* Keeping track of individual OCItems in DisplayViewController instances

But loading the list of items in the gallery only once and not reacting to any changes (moving, deleting)

* Removed query stop call in DisplayHostViewController

Since this query is not created there but just passed from the parent view.

* Removing more button if the currently viewed file got moved or deleted

* Fixed updating UI after renaming current item

* Fixed a warning

* Fixed issues in the gallery

* - Minor fixes

* - Make changes requested in code review, adding missing localizable strings and removing extraneous code

* - Update SDK

* [feature/bundle-import] Add support for certain bundle formats to the share sheet (#471)

* - Add support for import of bundle-based document formats through transparent zipping
	- moved previous FileProvider functionality into ownCloudApp.framework
	- new method OCCore.importItemNamed() ensures correct handling of bundle-based document formats
	- fixes finding (4) in #445
- Changed LSSupportsOpeningDocumentsInPlace to NO address two issues:
	- the app is now listed as "Copy to ownCloud" (previously "Open in ownCloud", which was technically not correct)
	- previously, documents using "Open to ownCloud" would no longer open in f.ex. Pages, but in the ownCloud app when selected in the Files app

* - Refactored ImportFilesController around using NSFileCoordinator, fixing finding (1) in #471

* changed path for moved Info.plist for target ownCloudAppFramework

* - Add downloadTriggerIdentifier and availableOfflinePolicyCoverage as properties that trigger the update of an item's visual representation (addressing finding 6 in #456)
- Update make available offline action to use new convertExistingLocalDownloads option (addressing finding 2 in #456)
- Update SDK (addressing finding 5 in #456)

* Version Bump to 133

* [feature/sort direction] Allow sorting asc/desc for all sort methods (#474)

* #470 added change sort direction asc/desc for all sort methods

* - removed comments
- changed translation keys

* fixes sort comparator for sort method "shared"

* use correct images for sort direction asc and desc

* updated choosing sort method from a tableView/Popover instead of a UIAlertViewController

* set maximum width for popover and set arrow direction

* Added show sort direction in UISegmentControl

* - make sure arrows of popovers appear in same color as the popover contents
- fix issue where direction was toggled during setup of SortBar (setting of initial value from user defaults), so logging in, logging out and logging in would change the sort direction
- reset sort direction to ascendant when switching sort methods
- SortMethodTableViewController
	- remove extraneous instance lets
	- enforce row height used for table view height calculation
	- change table view height calculation to account for the last divider (which could look a bit off if present)

* tap on segment control was fired twice, because there was a missing check, if selected segment changed

* fixed changing width on selecting an other segment

* fixed jumping width of sortSegmentControl items by setting the same width for all items by calculating the longest width before

* [fix/index-bar] Make Index Bar available in general file list (#469)

* #413 show index bar in general file list
- Index bar is only visible, if sorting is "Sort by name"
- Index bar is only visible, if more than one different letters are available
- Index bar is only visible, if more items are available as visible

* - adopt to new sort methods
- reverse index list, if sort direction is descendant

* Version Bump to 134

* Version Bump to 135

* Items in moved Available Offline folders should no longer be cleared locally and re-downloaded, following under the hood improvements in the ios-sdk

* - Add initial support for cookies via SDK update

* Version Bump to 136

*  Change behaviour of default expiration date (#476)

* Enabling expiration date switch if default expiration date is configured

Checking files_sharing.public.expire_date.expire_date.days server capability. If it is set then it is used as default date and the switch is enabled even if the expiration date is not enforced.

* Fixed QA issue (1)

* Fixed QA finding (2): limiting the date range if expiration date is enforced

* - Temporarily disable some UI tests broken due to lack of database running

* - Fix issue (11) in #456 by updating the lastUsed date of already downloaded items when they are viewed

* - Added slider type to StaticTableViewRow
- changed storage settings to allow picking a timeframe via slider rather than a list of time frames

* - Change text from "Remove" to "Make unavailable offline" in Quick Access > Available Offline list (addressing issue (9))

* - Update BookmarkInfoViewController to provide users with the choice to also remove local copies of items marked as Available Offline, issuing a warning and giving the users a way to cancel, addressing issue (12) in #456.

* Permission increasing UX in reshares (#467)

* Not showing permissions which can’t be elevated

Affecting items shared with the current users which are being reshared

* Fixed an issue with wrong permissions displayed when creating public link

- Checking if permissions can be elevated for the public link
- Only viable options are displayed

* Fixed a trailing whitespace warning

* Fixed another compiler warning

* Inhereting permissions from the share when creating public link

* Fixed QA finding (4)

* Fixed QA finding (1)

* Fixed QA finding (2)

* Version Bump to 137

* - Update ios-sdk
- Take advantage of the new key-value store and OCCoreSkipAvailableOfflineKey to make sure available offline files are not immediately downloaded again after clearing the vault from local copies of available offline files.
- Logging into an account removes any previously set OCCoreSkipAvailableOfflineKey from the key value store
- Move Bookmark locking to an OCBookmarkManager category (next stop: use the new key-value store and bake support for locking bookmarks directly into the SDK)

* - Add missing localization

* Update SDK with latest fixes

* - Fix SettingsTests bugs

* - Apply additional fixes to UI tests and disable the remaining failing ones

* - Wait for connection initialization to complete before requesting sharing info
- Use latest SDK with cookie filtering

* - Turn off Request/Response log tags only filter in project file

* - Disable cookie support

* - Address (13) via SDK update

* link against newest development SDK

* Fixes for UI testing:
- use new SDK version that returns errors if the SQLite DB has not been opened
- MockOCCore.state now returns .running to avoid queueing of PROPFINDs

* - Fix unit tests

* - UI testing: make MockOCCore.state no longer return .running due to side effects
- fixed conflicting constraints in two places

* - force-delete bookmarks in UI tests if timeout has passed, log error but don't assert in that case
- handle case where a swipe on table cells in DeleteBookmarkTests triggers deletion outright

* - Further hardening of SettingsTests against timing differences local vs. CI

* - make SettingsTest.testCheckMoreItems() more robust

* [feature/itempolicy] Item Policy / Available Offline support (#456)

* Available Offline Support
- new MakeAvailableOfflineAction and MakeUnavailableOfflineAction actions
- new Available Offline Library section
	- easy access to all files available offline via Available Offline
	- new ItemPolicyTableViewController and ItemPolicyCell prepared for reuse for presenting other item policies
- Design: added SVG/TVG/PNG icons and cloud symbols for make available offline / make unavailable offline

ClientItemCell changes
- new ClientItemResolvingCell can resolve item from LocalID or path, new superclass of ShareClientItemCell and ItemPolicyCell
- string to use as content for title and detail are now provided via titleLabelString(for:) and detailLabelString(for:), updated via updateLabels(with:), making customization easier
- support for new available offline badge

ProgressSummarizer changes
- changed ProgressSummary from a struct to a class, addressing issue #451 ("Waiting for server response..." message sometimes not disappearing)

* - Adopt OCClaim to ensure files aren't deleted while they are being used in
	- DisplayViewController
	- DownloadItemsHUDViewController
	- FileListTableViewController
	- File Provider
- Add new Storage Settings to allow control over how long unused local copies are kept around
- DisplayViewController now uses OCClaims to ensure files aren't deleted while they are being viewed
- ClientItemCell uses new SDK APIs to
	- show "available offline" badges for folders
	- to indicate if an item has been made available offline directly (solid icon) or indirectly (dimmed icon)
	- keep the cloud status icon updated following changes
- Change "+" icon to "•••" icon in file list, rename plusButton to folderAction everywhere
- Action.provideAlertAction() now applies padding to images if necessary so their text aligns at the same horizontal offset
- Fix typo in BookmarkInfoViewController and change wording from "Delete Offline Copies" to "Delete Local Copies" for consistency
- Update swiftlint.yml to silence ownCloudScreenshotsTests warnings

* - Update ios-sdk

* - Make changes requested in code review, adding missing localizable strings and removing extraneous code

* - Update SDK

* - Add downloadTriggerIdentifier and availableOfflinePolicyCoverage as properties that trigger the update of an item's visual representation (addressing finding 6 in #456)
- Update make available offline action to use new convertExistingLocalDownloads option (addressing finding 2 in #456)
- Update SDK (addressing finding 5 in #456)

* Items in moved Available Offline folders should no longer be cleared locally and re-downloaded, following under the hood improvements in the ios-sdk

* - Add initial support for cookies via SDK update

* - Temporarily disable some UI tests broken due to lack of database running

* - Fix issue (11) in #456 by updating the lastUsed date of already downloaded items when they are viewed

* - Added slider type to StaticTableViewRow
- changed storage settings to allow picking a timeframe via slider rather than a list of time frames

* - Change text from "Remove" to "Make unavailable offline" in Quick Access > Available Offline list (addressing issue (9))

* - Update BookmarkInfoViewController to provide users with the choice to also remove local copies of items marked as Available Offline, issuing a warning and giving the users a way to cancel, addressing issue (12) in #456.

* - Update ios-sdk
- Take advantage of the new key-value store and OCCoreSkipAvailableOfflineKey to make sure available offline files are not immediately downloaded again after clearing the vault from local copies of available offline files.
- Logging into an account removes any previously set OCCoreSkipAvailableOfflineKey from the key value store
- Move Bookmark locking to an OCBookmarkManager category (next stop: use the new key-value store and bake support for locking bookmarks directly into the SDK)

* - Add missing localization

* Update SDK with latest fixes

* - Fix SettingsTests bugs

* - Apply additional fixes to UI tests and disable the remaining failing ones

* - Wait for connection initialization to complete before requesting sharing info
- Use latest SDK with cookie filtering

* - Turn off Request/Response log tags only filter in project file

* - Disable cookie support

* - Address (13) via SDK update

* link against newest development SDK

* Fixes for UI testing:
- use new SDK version that returns errors if the SQLite DB has not been opened
- MockOCCore.state now returns .running to avoid queueing of PROPFINDs

* - Fix unit tests

* - UI testing: make MockOCCore.state no longer return .running due to side effects
- fixed conflicting constraints in two places

* - force-delete bookmarks in UI tests if timeout has passed, log error but don't assert in that case
- handle case where a swipe on table cells in DeleteBookmarkTests triggers deletion outright

* - Further hardening of SettingsTests against timing differences local vs. CI

* - make SettingsTest.testCheckMoreItems() more robust

* Version Bump to 138

* [feature/reorder buttons] Reorder Navigation Bar Actions (#478)

* Available Offline Support
- new MakeAvailableOfflineAction and MakeUnavailableOfflineAction actions
- new Available Offline Library section
	- easy access to all files available offline via Available Offline
	- new ItemPolicyTableViewController and ItemPolicyCell prepared for reuse for presenting other item policies
- Design: added SVG/TVG/PNG icons and cloud symbols for make available offline / make unavailable offline

ClientItemCell changes
- new ClientItemResolvingCell can resolve item from LocalID or path, new superclass of ShareClientItemCell and ItemPolicyCell
- string to use as content for title and detail are now provided via titleLabelString(for:) and detailLabelString(for:), updated via updateLabels(with:), making customization easier
- support for new available offline badge

ProgressSummarizer changes
- changed ProgressSummary from a struct to a class, addressing issue #451 ("Waiting for server response..." message sometimes not disappearing)

* - Adopt OCClaim to ensure files aren't deleted while they are being used in
	- DisplayViewController
	- DownloadItemsHUDViewController
	- FileListTableViewController
	- File Provider
- Add new Storage Settings to allow control over how long unused local copies are kept around
- DisplayViewController now uses OCClaims to ensure files aren't deleted while they are being viewed
- ClientItemCell uses new SDK APIs to
	- show "available offline" badges for folders
	- to indicate if an item has been made available offline directly (solid icon) or indirectly (dimmed icon)
	- keep the cloud status icon updated following changes
- Change "+" icon to "•••" icon in file list, rename plusButton to folderAction everywhere
- Action.provideAlertAction() now applies padding to images if necessary so their text aligns at the same horizontal offset
- Fix typo in BookmarkInfoViewController and change wording from "Delete Offline Copies" to "Delete Local Copies" for consistency
- Update swiftlint.yml to silence ownCloudScreenshotsTests warnings

* - Update ios-sdk

* - Make changes requested in code review, adding missing localizable strings and removing extraneous code

* #477 reorganize navigation bar with create and more button and moved select button to sort menu

* added safeAreaLayoutGuide.rightAnchor

* - Update SDK

* changed "Select" image

* - Add downloadTriggerIdentifier and availableOfflinePolicyCoverage as properties that trigger the update of an item's visual representation (addressing finding 6 in #456)
- Update make available offline action to use new convertExistingLocalDownloads option (addressing finding 2 in #456)
- Update SDK (addressing finding 5 in #456)

* Items in moved Available Offline folders should no longer be cleared locally and re-downloaded, following under the hood improvements in the ios-sdk

* - Temporarily disable some UI tests broken due to lack of database running

* - Fix issue (11) in #456 by updating the lastUsed date of already downloaded items when they are viewed

* - Added slider type to StaticTableViewRow
- changed storage settings to allow picking a timeframe via slider rather than a list of time frames

* - Change text from "Remove" to "Make unavailable offline" in Quick Access > Available Offline list (addressing issue (9))

* - Update BookmarkInfoViewController to provide users with the choice to also remove local copies of items marked as Available Offline, issuing a warning and giving the users a way to cancel, addressing issue (12) in #456.

* addresses:
- missing multiselection UI in toolbar
- missing select all / deselect all button in navigation bar

* set if selectButton should be shown

* disable temporary some tests due to bitrise failures

* - Added new document scanner action
	- supports saving as PDF, JPEG or PNG
	- supports saving multiple pages into one PDF file, or one PDF file per page
	- supports several scans per file
	- uses CoreGraphics to save JPEG-compressed images, saving storage (2.7 MB vs 31 MB for a two page document) and encoding/upload time compared to using Apple's PDFKit
- Extended StaticTableViewRow with better support for custom views and accessories

* Version Bump to 139

* Feature/task scheduling (#484)

* #386 Added relevant classes

* First draft of the scheduled task manager

* Just changed some comments

* Implemented background fetch

* Implemented background update fetch

* Clean up of the code

* Fixed merge problems from previous commit

And eliminated some warnings

* Small changes in background fetch operation

* Some refactoring done

* Added some user defaults for media upload

* Available Offline Support
- new MakeAvailableOfflineAction and MakeUnavailableOfflineAction actions
- new Available Offline Library section
	- easy access to all files available offline via Available Offline
	- new ItemPolicyTableViewController and ItemPolicyCell prepared for reuse for presenting other item policies
- Design: added SVG/TVG/PNG icons and cloud symbols for make available offline / make unavailable offline

ClientItemCell changes
- new ClientItemResolvingCell can resolve item from LocalID or path, new superclass of ShareClientItemCell and ItemPolicyCell
- string to use as content for title and detail are now provided via titleLabelString(for:) and detailLabelString(for:), updated via updateLabels(with:), making customization easier
- support for new available offline badge

ProgressSummarizer changes
- changed ProgressSummary from a struct to a class, addressing issue #451 ("Waiting for server response..." message sometimes not disappearing)

* UI for bookmark / upload path selection

* Added dummy implementation of media upload task

* - Adopt OCClaim to ensure files aren't deleted while they are being used in
	- DisplayViewController
	- DownloadItemsHUDViewController
	- FileListTableViewController
	- File Provider
- Add new Storage Settings to allow control over how long unused local copies are kept around
- DisplayViewController now uses OCClaims to ensure files aren't deleted while they are being viewed
- ClientItemCell uses new SDK APIs to
	- show "available offline" badges for folders
	- to indicate if an item has been made available offline directly (solid icon) or indirectly (dimmed icon)
	- keep the cloud status icon updated following changes
- Change "+" icon to "•••" icon in file list, rename plusButton to folderAction everywhere
- Action.provideAlertAction() now applies padding to images if necessary so their text aligns at the same horizontal offset
- Fix typo in BookmarkInfoViewController and change wording from "Delete Offline Copies" to "Delete Local Copies" for consistency
- Update swiftlint.yml to silence ownCloudScreenshotsTests warnings

* - Update ios-sdk

* - Make changes requested in code review, adding missing localizable strings and removing extraneous code

* - Update SDK

* Refactored current implementation of media upload

* Added method to fetch photos from photo library

* - Add downloadTriggerIdentifier and availableOfflinePolicyCoverage as properties that trigger the update of an item's visual representation (addressing finding 6 in #456)
- Update make available offline action to use new convertExistingLocalDownloads option (addressing finding 2 in #456)
- Update SDK (addressing finding 5 in #456)

* Items in moved Available Offline folders should no longer be cleared locally and re-downloaded, following under the hood improvements in the ios-sdk

* - Add initial support for cookies via SDK update

* First draft of instant photo upload implementation

* Calling task completion handler after upload was finished

* - Temporarily disable some UI tests broken due to lack of database running

* - Fix issue (11) in #456 by updating the lastUsed date of already downloaded items when they are viewed

* - Added slider type to StaticTableViewRow
- changed storage settings to allow picking a timeframe via slider rather than a list of time frames

* - Change text from "Remove" to "Make unavailable offline" in Quick Access > Available Offline list (addressing issue (9))

* - Update BookmarkInfoViewController to provide users with the choice to also remove local copies of items marked as Available Offline, issuing a warning and giving the users a way to cancel, addressing issue (12) in #456.

* Fixed QA finding (1)

* Using PHAsset.creationDate to check which media files shall be instantly uploaded

* Fixed naming of class / group

* Moved Tasks folder

* Fixed some review findings

* - Fix issue where a busy bookmark alert is followed by duplicating the bookmark

* Fixed some review findings

* Improved background update fetching

* Fixed some issues in media upload

* Fixed a type in settings key

* Improvements in the instant media upload task

* Added missing returnCore in the selection of the instant upload path

* Fixed QA finding (3)

* Fixes for the correct core returning / requesting

* Small cosmetic code changes

* Fixed video and serialized photo / video uploads

* Moved upload() method to UploadBaseAction class

* Some refactoring in InstantMediaUploadTaskExtension

* Improvements for bookmark / path selection for instant upload

* Remove instant upload configuration if bookmark is not available

* minor refactoring

* Added possibility to cancel account selection

* Small fix: reset the path if new account is selected

* Using item tracking instead of OCQuery

- Disabling instant photo upload if target directory is removed
- Item tracking is potentially faster since it can use cached item information and is not always issuing PROPFIND

* Made some ivars private

* Detect in settings that instant upload path is gone

In this case instant upload is disabled

* - Update ios-sdk
- Take advantage of the new key-value store and OCCoreSkipAvailableOfflineKey to make sure available offline files are not immediately downloaded again after clearing the vault from local copies of available offline files.
- Logging into an account removes any previously set OCCoreSkipAvailableOfflineKey from the key value store
- Move Bookmark locking to an OCBookmarkManager category (next stop: use the new key-value store and bake support for locking bookmarks directly into the SDK)

* - Add missing localization

* Update SDK with latest fixes

* - Fix SettingsTests bugs

* - Apply additional fixes to UI tests and disable the remaining failing ones

* - Wait for connection initialization to complete before requesting sharing info
- Use latest SDK with cookie filtering

* - Turn off Request/Response log tags only filter in project file

* - Disable cookie support

* - Address (13) via SDK update

* link against newest development SDK

* Showing warning that instant upload was disabled

* Fixes for UI testing:
- use new SDK version that returns errors if the SQLite DB has not been opened
- MockOCCore.state now returns .running to avoid queueing of PROPFINDs

* - Fix unit tests

* Added alert shown when in settings when instant upload is disabled

* Added fetchUpdates() within which target folder tracking is started

* - UI testing: make MockOCCore.state no longer return .running due to side effects
- fixed conflicting constraints in two places

* - force-delete bookmarks in UI tests if timeout has passed, log error but don't assert in that case
- handle case where a swipe on table cells in DeleteBookmarkTests triggers deletion outright

* - Further hardening of SettingsTests against timing differences local vs. CI

* - make SettingsTest.testCheckMoreItems() more robust

* Update to the latest changes in the SDK

Those changes reduce memory consumption used for hash calculation

* Change required to accomodate latest SDK changes

* Less parallel photo uploads

* - update SDK to address stuck sync action issues
- no longer auto-open the last selected bookmark when launched by iOS in the background. Instead, the last selected bookmark is now auto-openend only when the app comes to the foreground.
- update FileProviderInterfaceManager to better support the case where the app ships without File Provider.

* Fixed compilation warning

* - Add ATS exemption for File Provider

* - Update SDK

* - Update SDK + add colored debugging option to scheme

* Addressed code review comments

* Removed unneeded weak self

* Removed another unwanted weak self

* - Fix OCEvent-dropping issue via SDK update with fix
- Make UploadMediaAction use OCBackgroundTask to protect while exporting

* - Added missing OCBackgroundTask.start call in UploadMediaAction
- Update SDK

* Fixed missing copyright information and some warnings

* Version Bump to 140

* Media upload pending flag added

- Displaying a warning alert on the next launch, in case media upload couldn’t be completed due e.g. app being terminated in a backround or even due to an app crash.
- Fixed an issue with DispatchGroup.notify() called prematurely in MediaUploadQueue.uploadAssets()

* - sortbar was sometimes hidden
- fixing layout issue

* fixed location identifier for actions

* Added more logs in PHAsset+Upload extension

* Version Bump to 141

* Version Bump to 142

* - refactor ScanImageView into FixedHeightImageView
- adopt SF Symbols for ScanAction icon
- replace unused, commented out commented code with a longer comment in a different place, explaining why Quartz is used instead of PDFKit for PDF export
- various smaller cleanups and syntax improvements

* Version Bump to 143

* Version Bump to 144

* Version Bump to 145

* - Merge fixes

* - Remove change of beta alert from branch

* - address finding (1): if the file name is removed and empty, disable the "Save" button in the Document Scanner

* [fix/2ndLevelSort] Sort alphabetically if sort attribute is equal (#546)

* - Update SDK to disable background NSURLSession usage in the app

* - Fix alphabetically random order when sorting by anything but alphabetically: now items that share the same sort attribute value are subsequently also sorted alphabetically

* - Update SDK

* [feature/keyboard-commands] Keyboard Commands for all actions on iPad (#495)

* Naming improvements based on latest SDK:
- uploads use new OCCoreOptionAutomaticConflictResolutionNameStyle option to automatically resolve naming conflicts during upload
- Duplicate action uses the new OCCore name suggestion API to
	- determine naming conflicts and resolve them automatically
	- match the name style of the file to duplicate, f.ex.
		- duplicating "File copy.jpg" will create "File copy 2.jpg"
		- duplicating "File (1).jpg" will create "File (2).jpg"
		- duplicating "File Kopie 2.jpg" will create "File Kopie 3.jpg"
- folder creation uses the new OCCore name suggestion API to
	- detect naming conflicts beforehand
	- pre-fill the new folder name name with an unused name directly

* #393 added an activity indicator which will be shown, if offline copies will be deleted to give the user a UI feedback

* - Change SDK branch to master

* #76 user can import files using the iOS share sheet. all file types are accepted.

* - using new SDK with fixes for requesting core
- minor code fixes

* - Log device, version and locale information at the beginning of every log file using new SDK protocol
- Show SDK commit hash in Settings

* fixed crash, changed bookmark name to shortname

* changed UIAlertViewController for account selection to CardViewController style for testing

* fixed icon badge creation for fastlane lane In-House Enterprise IPA generation

* install librsvg for fastlane via sh

* moved import file code to own class

* added option to automatically resolve name conflicts, if file name already exists

* Changed app version to 1.1.0

* enabled beta build and warning

*  Keep the gallery alive after doing some action over an item (#447)

* Rename updates the currently visible file in the gallery

* Keeping gallery alive fix

- Don’t pop to the root view controller on destructive action by default
- Only pop to the root if all items have been deleted
- Select next item upon deletion of the current ones
- Update UIPageViewController data source if number of items changes due e.g. to duplication or deletion

* Small fixes

* Fixed review findings

* Media player implemented using AVKit (#429)

* Media player implemented using AVKit

* Added possibility to stream audio / video

* Improved error handling

* Fixed review finding

* Added background audio, airplay and PiP mode

* Propagating safe area to the main view of AVPlayerViewController

* Another fix for safe area considering layout of AVPlayerViewController

* Updated to latest develop version of SDK

* Display error message in case file couldn’t be preview e.g. due to file corruption (#427)

* Fixed UI test for creating folder, need to return a fixed name, because suggestion is not working in tests

* added a description header and changed typo

* - fixed showing the directory picker controller, after the card view was dismissed
- use the current development SDK

* Version Bump to 126

* - create local copy of import file, if needed
- fixed create folder action
- delete local copy, if needed
- code review changes

* - improved duplicate item deletion behaviour
	- add additional safeguard so duplicate files are only deleted if they were actually duplicated (previously non-duplicate files could be removed if duplication or folder creation failed)
	- remove temporary container folder, too
- add 2 second delay before returning the core to give the core an opportunity to schedule the upload on a NSURLSession

* Version Bump to 127

* changed back signing identity

* Version Bump to 128

* added required CFBundleTypeName key

* Version Bump to 129

* updated changelog

* use formSheet presentation style for the iPad when showing the document picker

* Fix for images not being displayed in the gallery

* Version Bump to 130

* Version Bump to 131

* [fix/sharing-search] Fixed min length for searching sharing users (#455)

* #454 used correct comparator for sharingSearchMinLength and set a new default value, if capability does not exists

* added a constant for defaultSharingSearchMinLength value

* - Update ios-sdk to address finding (1) in ios-app #446

* Preventing updating UI in DisplayViewController while item is being changed

- Not calling present(item:) while meta data of OCItem is being updated
- Elliminated an assumption in MediaDisplayViewController that render renderSpecificView() can be called only once.
- Making sure that AVPlayer is not re-created upon changes in OCItem but that rather AVPlayerItem is replaced.

* Fixed a small warning

* Tried to improve gallery logic concerning items modification

- Watch out if the modification does still includes the item with local ID of the currently visible item.
- Take care of failed move but watching out for reappearing items

* Added a setting allowing to decide user if media files shall be streamed

* - Add debug output to Display*ViewController
- Fix SwiftLint warnings

* Fixed handling of deleted / moved item in the gallery

* Another small fix for handling of failed item move

* Version Bump to 132

* Added LSSupportsOpeningDocumentsInPlace key to Info.plist

* Fixed Info.plist and added LSHandlerRank property

* Fix for #455 issue: no search request triggered

* show always the account selection sheet and added a note, that only one file can be imported at once

* use securtiy scoped file operation for importing a file

* Fix for the PR #447 (keep gallery alive) (#465)

* Keeping track of individual OCItems in DisplayViewController instances

But loading the list of items in the gallery only once and not reacting to any changes (moving, deleting)

* Removed query stop call in DisplayHostViewController

Since this query is not created there but just passed from the parent view.

* Removing more button if the currently viewed file got moved or deleted

* Fixed updating UI after renaming current item

* Fixed a warning

* Fixed issues in the gallery

* - Minor fixes

* [feature/bundle-import] Add support for certain bundle formats to the share sheet (#471)

* - Add support for import of bundle-based document formats through transparent zipping
	- moved previous FileProvider functionality into ownCloudApp.framework
	- new method OCCore.importItemNamed() ensures correct handling of bundle-based document formats
	- fixes finding (4) in #445
- Changed LSSupportsOpeningDocumentsInPlace to NO address two issues:
	- the app is now listed as "Copy to ownCloud" (previously "Open in ownCloud", which was technically not correct)
	- previously, documents using "Open to ownCloud" would no longer open in f.ex. Pages, but in the ownCloud app when selected in the Files app

* - Refactored ImportFilesController around using NSFileCoordinator, fixing finding (1) in #471

* changed path for moved Info.plist for target ownCloudAppFramework

* Version Bump to 133

* [feature/sort direction] Allow sorting asc/desc for all sort methods (#474)

* #470 added change sort direction asc/desc for all sort methods

* - removed comments
- changed translation keys

* fixes sort comparator for sort method "shared"

* use correct images for sort direction asc and desc

* updated choosing sort method from a tableView/Popover instead of a UIAlertViewController

* set maximum width for popover and set arrow direction

* Added show sort direction in UISegmentControl

* - make sure arrows of popovers appear in same color as the popover contents
- fix issue where direction was toggled during setup of SortBar (setting of initial value from user defaults), so logging in, logging out and logging in would change the sort direction
- reset sort direction to ascendant when switching sort methods
- SortMethodTableViewController
	- remove extraneous instance lets
	- enforce row height used for table view height calculation
	- change table view height calculation to account for the last divider (which could look a bit off if present)

* tap on segment control was fired twice, because there was a missing check, if selected segment changed

* fixed changing width on selecting an other segment

* fixed jumping width of sortSegmentControl items by setting the same width for all items by calculating the longest width before

* [fix/index-bar] Make Index Bar available in general file list (#469)

* #413 show index bar in general file list
- Index bar is only visible, if sorting is "Sort by name"
- Index bar is only visible, if more than one different letters are available
- Index bar is only visible, if more items are available as visible

* - adopt to new sort methods
- reverse index list, if sort direction is descendant

* Version Bump to 134

* Version Bump to 135

* Version Bump to 136

*  Change behaviour of default expiration date (#476)

* Enabling expiration date switch if default expiration date is configured

Checking files_sharing.public.expire_date.expire_date.days server capability. If it is set then it is used as default date and the switch is enabled even if the expiration date is not enforced.

* Fixed QA issue (1)

* Fixed QA finding (2): limiting the date range if expiration date is enforced

* Implement UIKeyCommands to access all actions and navigate through table views via hardware key shortcuts

* Permission increasing UX in reshares (#467)

* Not showing permissions which can’t be elevated

Affecting items shared with the current users which are being reshared

* Fixed an issue with wrong permissions displayed when creating public link

- Checking if permissions can be elevated for the public link
- Only viable options are displayed

* Fixed a trailing whitespace warning

* Fixed another compiler warning

* Inhereting permissions from the share when creating public link

* Fixed QA finding (4)

* Fixed QA finding (1)

* Fixed QA finding (2)

* fixed table selection in StaticTableView with key command

* Version Bump to 137

* - moved KeyCommands extension into own file
- added new commands

* [feature/itempolicy] Item Policy / Available Offline support (#456)

* Available Offline Support
- new MakeAvailableOfflineAction and MakeUnavailableOfflineAction actions
- new Available Offline Library section
	- easy access to all files available offline via Available Offline
	- new ItemPolicyTableViewController and ItemPolicyCell prepared for reuse for presenting other item policies
- Design: added SVG/TVG/PNG icons and cloud symbols for make available offline / make unavailable offline

ClientItemCell changes
- new ClientItemResolvingCell can resolve item from LocalID or path, new superclass of ShareClientItemCell and ItemPolicyCell
- string to use as content for title and detail are now provided via titleLabelString(for:) and detailLabelString(for:), updated via updateLabels(with:), making customization easier
- support for new available offline badge

ProgressSummarizer changes
- changed ProgressSummary from a struct to a class, addressing issue #451 ("Waiting for server response..." message sometimes not disappearing)

* - Adopt OCClaim to ensure files aren't deleted while they are being used in
	- DisplayViewController
	- DownloadItemsHUDViewController
	- FileListTableViewController
	- File Provider
- Add new Storage Settings to allow control over how long unused local copies are kept around
- DisplayViewController now uses OCClaims to ensure files aren't deleted while they are being viewed
- ClientItemCell uses new SDK APIs to
	- show "available offline" badges for folders
	- to indicate if an item has been made available offline directly (solid icon) or indirectly (dimmed icon)
	- keep the cloud status icon updated following changes
- Change "+" icon to "•••" icon in file list, rename plusButton to folderAction everywhere
- Action.provideAlertAction() now applies padding to images if necessary so their text aligns at the same horizontal offset
- Fix typo in BookmarkInfoViewController and change wording from "Delete Offline Copies" to "Delete Local Copies" for consistency
- Update swiftlint.yml to silence ownCloudScreenshotsTests warnings

* - Update ios-sdk

* - Make changes requested in code review, adding missing localizable strings and removing extraneous code

* - Update SDK

* - Add downloadTriggerIdentifier and availableOfflinePolicyCoverage as properties that trigger the update of an item's visual representation (addressing finding 6 in #456)
- Update make available offline action to use new convertExistingLocalDownloads option (addressing finding 2 in #456)
- Update SDK (addressing finding 5 in #456)

* Items in moved Available Offline folders should no longer be cleared locally and re-downloaded, following under the hood improvements in the ios-sdk

* - Add initial support for cookies via SDK update

* - Temporarily disable some UI tests broken due to lack of database running

* - Fix issue (11) in #456 by updating the lastUsed date of already downloaded items when they are viewed

* - Added slider type to StaticTableViewRow
- changed storage settings to allow picking a timeframe via slider rather than a list of time frames

* - Change text from "Remove" to "Make unavailable offline" in Quick Access > Available Offline list (addressing issue (9))

* - Update BookmarkInfoViewController to provide users with the choice to also remove local copies of items marked as Available Offline, issuing a warning and giving the users a way to cancel, addressing issue (12) in #456.

* - Update ios-sdk
- Take advantage of the new key-value store and OCCoreSkipAvailableOfflineKey to make sure available offline files are not immediately downloaded again after clearing the vault from local copies of available offline files.
- Logging into an account removes any previously set OCCoreSkipAvailableOfflineKey from the key value store
- Move Bookmark locking to an OCBookmarkManager category (next stop: use the new key-value store and bake support for locking bookmarks directly into the SDK)

* - Add missing localization

* Update SDK with latest fixes

* - Fix SettingsTests bugs

* - Apply additional fixes to UI tests and disable the remaining failing ones

* - Wait for connection initialization to complete before requesting sharing info
- Use latest SDK with cookie filtering

* - Turn off Request/Response log tags only filter in project file

* - Disable cookie support

* - Address (13) via SDK update

* link against newest development SDK

* Fixes for UI testing:
- use new SDK version that returns errors if the SQLite DB has not been opened
- MockOCCore.state now returns .running to avoid queueing of PROPFINDs

* - Fix unit tests

* - UI testing: make MockOCCore.state no longer return .running due to side effects
- fixed conflicting constraints in two places

* - force-delete bookmarks in UI tests if timeout has passed, log error but don't assert in that case
- handle case where a swipe on table cells in DeleteBookmarkTests triggers deletion outright

* - Further hardening of SettingsTests against timing differences local vs. CI

* - make SettingsTest.testCheckMoreItems() more robust

* Version Bump to 138

* [feature/reorder buttons] Reorder Navigation Bar Actions (#478)

* Available Offline Support
- new MakeAvailableOfflineAction and MakeUnavailableOfflineAction actions
- new Available Offline Library section
	- easy access to all files available offline via Available Offline
	- new ItemPolicyTableViewController and ItemPolicyCell prepared for reuse for presenting other item policies
- Design: added SVG/TVG/PNG icons and cloud symbols for make available offline / make unavailable offline

ClientItemCell changes
- new ClientItemResolvingCell can resolve item from LocalID or path, new superclass of ShareClientItemCell and ItemPolicyCell
- string to use as content for title and detail are now provided via titleLabelString(for:) and detailLabelString(for:), updated via updateLabels(with:), making customization easier
- support for new available offline badge

ProgressSummarizer changes
- changed ProgressSummary from a struct to a class, addressing issue #451 ("Waiting for server response..." message sometimes not disappearing)

* - Adopt OCClaim to ensure files aren't deleted while they are being used in
	- DisplayViewController
	- DownloadItemsHUDViewController
	- FileListTableViewController
	- File Provider
- Add new Storage Settings to allow control over how long unused local copies are kept around
- DisplayViewController now uses OCClaims to ensure files aren't deleted while they are being viewed
- ClientItemCell uses new SDK APIs to
	- show "available offline" badges for folders
	- to indicate if an item has been made available offline directly (solid icon) or indirectly (dimmed icon)
	- keep the cloud status icon updated following changes
- Change "+" icon to "•••" icon in file list, rename plusButton to folderAction everywhere
- Action.provideAlertAction() now applies padding to images if necessary so their text aligns at the same horizontal offset
- Fix typo in BookmarkInfoViewController and change wording from "Delete Offline Copies" to "Delete Local Copies" for consistency
- Update swiftlint.yml to silence ownCloudScreenshotsTests warnings

* - Update ios-sdk

* - Make changes requested in code review, adding missing localizable strings and removing extraneous code

* #477 reorganize navigation bar with create and more button and moved select button to sort menu

* added safeAreaLayoutGuide.rightAnchor

* - Update SDK

* changed "Select" image

* - Add downloadTriggerIdentifier and availableOfflinePolicyCoverage as properties that trigger the update of an item's visual representation (addressing finding 6 in #456)
- Update make available offline action to use new convertExistingLocalDownloads option (addressing finding 2 in #456)
- Update SDK (addressing finding 5 in #456)

* Items in moved Available Offline folders should no longer be cleared locally and re-downloaded, following under the hood improvements in the ios-sdk

* - Temporarily disable some UI tests broken due to lack of database running

* - Fix issue (11) in #456 by updating the lastUsed date of already downloaded items when they are viewed

* - Added slider type to StaticTableViewRow
- changed storage settings to allow picking a timeframe via slider rather than a list of time frames

* - Change text from "Remove" to "Make unavailable offline" in Quick Access > Available Offline list (addressing issue (9))

* - Update BookmarkInfoViewController to provide users with the choice to also remove local copies of items marked as Available Offline, issuing a warning and giving the users a way to cancel, addressing issue (12) in #456.

* addresses:
- missing multiselection UI in toolbar
- missing select all / deselect all button in navigation bar

* set if selectButton should be shown

* disable temporary some tests due to bitrise failures

* using correct SDK after merge

* fixed changed selectButton variable name after merge

* - added missing commands
- added photo album, photo selection
- fixed deselecting row

* fixed folder actions commands

* added sharing and links key commands

* - added key commands for LibrarySharing
- added localization

* - added missing key commands
- fixed keep selection, if FileList was reloaded
- fixed localization
- implemented copy and paste commands
- implemented new selection commands (letters, top, bottom, page)

* added commands for bookmark selection

* Determine, if the internal pasteboard is the current item and use it

* - implemented "Cut"-Command, "Favorite"-Command
- implemented Next, Previous Command for image gallery and PDF viewer
- fixed Sort-Type Command Key, because of system conflicts
- changed command key for adding a new account

* - refactored code to own actions
- cleanup code
- use extensions for key commands

* - fixed code review findings
- moving pasteboard actions copy, import and cut to separate PR

* Fixed QA finding (6), unfavorite was not possible, favorite was wrong

* - fixed QA finding (1), directory picker key commands fixed
- fixed QA finding (4), create folder in root folder
- fixed QA finding (5), available offline for selected item
- fixed QA finding (6), make unavailable
- fixed QA finding (8), dismiss manage account view

* added keyboard commands for
- open account in new window
- scan document
- discard window
- open window

* - fixed duplicated keyboard commands
- fixed crash on selecting next item in list

* Finding (7) fixed
- added keyboard commands for IssuesViewController

* fixed findings (3), (7), (9), (11)
- Cancel Search
- Commands for internal Alert Views
- Change slider value
- Crash in welcome view

* added missing localization strings

* fixed finding (13)
- Cancel did not dismiss alert view
- Only show alert view key commands

* Finding: (14), (15) crash fixed

* Fixed finding (17) and do not show tab bar controllers for modal views, added share command

* - Remove document scanning feature (pending licensing feature)

* - Allow offline browsing of folders in the File Provider (#554)

* [feature/ios13_ql_preview] QuickLookPreview and QuickLookThumbnailing integration (#493)

* Naming improvements based on latest SDK:
- uploads use new OCCoreOptionAutomaticConflictResolutionNameStyle option to automatically resolve naming conflicts during upload
- Duplicate action uses the new OCCore name suggestion API to
	- determine naming conflicts and resolve them automatically
	- match the name style of the file to duplicate, f.ex.
		- duplicating "File copy.jpg" will create "File copy 2.jpg"
		- duplicating "File (1).jpg" will create "File (2).jpg"
		- duplicating "File Kopie 2.jpg" will create "File Kopie 3.jpg"
- folder creation uses the new OCCore name suggestion API to
	- detect naming conflicts beforehand
	- pre-fill the new folder name name with an unused name directly

* #393 added an activity indicator which will be shown, if offline copies will be deleted to give the user a UI feedback

* - Change SDK branch to master

* #76 user can import files using the iOS share sheet. all file types are accepted.

* - using new SDK with fixes for requesting core
- minor code fixes

* - Log device, version and locale information at the beginning of every log file using new SDK protocol
- Show SDK commit hash in Settings

* fixed crash, changed bookmark name to shortname

* changed UIAlertViewController for account selection to CardViewController style for testing

* fixed icon badge creation for fastlane lane In-House Enterprise IPA generation

* install librsvg for fastlane via sh

* moved import file code to own class

* added option to automatically resolve name conflicts, if file name already exists

* Changed app version to 1.1.0

* enabled beta build and warning

*  Keep the gallery alive after doing some action over an item (#447)

* Rename updates the currently vi…
  • Loading branch information
4 people committed Dec 20, 2019
1 parent 4969dbd commit 3b43c00
Show file tree
Hide file tree
Showing 121 changed files with 5,968 additions and 1,308 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -140,3 +140,5 @@ playground.xcworkspace
Pods/

# End of https://www.gitignore.io/api/xcode,swift,macos,objective-c
/fastlane/fastlane/Appfile
/Gemfile.lock
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
# ChangeLog

## Release version 1.2.0 (December 2019)

- Multiple Window Support (iPadOS) (#488)
- Keyboard Commands (iPadOS) (#282)
- Media Player Improvements (#59, #374)
- Better File Previews (#481)
- Arabic Language Support
- Fix: Sort alphabetically (PR #546)
- Fix: Share Sheet on iPad (#568)
- Fix: FileProvider File Type Issue (#557)
- Fix: FileProvider Offline Browsing (PR #547)
- Fix: FileProvider Saving from Microsoft Word (PR #574)
- Fix: Photo Upload (#504)

## Release version 1.1.2 (October 2019)

- Fix for long delays before starting a request on iOS 13.1 (PR #531)
Expand Down
54 changes: 27 additions & 27 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
GEM
remote: https://rubygems.org/
specs:
CFPropertyList (3.0.0)
addressable (2.6.0)
public_suffix (>= 2.0.2, < 4.0)
CFPropertyList (3.0.1)
addressable (2.7.0)
public_suffix (>= 2.0.2, < 5.0)
atomos (0.1.3)
babosa (1.0.2)
babosa (1.0.3)
badge (0.10.0)
curb (~> 0.9)
fastimage (>= 1.6)
fastlane (>= 2.0)
mini_magick (>= 4.5)
claide (1.0.2)
claide (1.0.3)
colored (1.2)
colored2 (3.1.2)
commander-fastlane (4.4.6)
Expand All @@ -20,20 +20,20 @@ GEM
declarative (0.0.10)
declarative-option (0.1.0)
digest-crc (0.4.1)
domain_name (0.5.20180417)
domain_name (0.5.20190701)
unf (>= 0.0.5, < 1.0.0)
dotenv (2.7.4)
dotenv (2.7.5)
emoji_regex (1.0.1)
excon (0.64.0)
faraday (0.15.4)
excon (0.68.0)
faraday (0.17.0)
multipart-post (>= 1.2, < 3)
faraday-cookie_jar (0.0.6)
faraday (>= 0.7.4)
http-cookie (~> 1.0.0)
faraday_middleware (0.13.1)
faraday (>= 0.7.4, < 1.0)
fastimage (2.1.5)
fastlane (2.126.0)
fastimage (2.1.7)
fastlane (2.135.1)
CFPropertyList (>= 2.3, < 4.0.0)
addressable (>= 2.3, < 3.0.0)
babosa (>= 1.0.2, < 2.0.0)
Expand All @@ -43,22 +43,22 @@ GEM
dotenv (>= 2.1.1, < 3.0.0)
emoji_regex (>= 0.1, < 2.0)
excon (>= 0.45.0, < 1.0.0)
faraday (~> 0.9)
faraday (~> 0.17)
faraday-cookie_jar (~> 0.0.6)
faraday_middleware (~> 0.9)
faraday_middleware (~> 0.13.1)
fastimage (>= 2.1.0, < 3.0.0)
gh_inspector (>= 1.1.2, < 2.0.0)
google-api-client (>= 0.21.2, < 0.24.0)
google-cloud-storage (>= 1.15.0, < 2.0.0)
highline (>= 1.7.2, < 2.0.0)
json (< 3.0.0)
jwt (~> 2.1.0)
mini_magick (~> 4.5.1)
mini_magick (>= 4.9.4, < 5.0.0)
multi_xml (~> 0.5)
multipart-post (~> 2.0.0)
plist (>= 3.1.0, < 4.0.0)
public_suffix (~> 2.0.0)
rubyzip (>= 1.2.2, < 2.0.0)
rubyzip (>= 1.3.0, < 2.0.0)
security (= 0.1.3)
simctl (~> 1.6.3)
slack-notifier (>= 2.0.0, < 3.0.0)
Expand All @@ -81,9 +81,9 @@ GEM
representable (~> 3.0)
retriable (>= 2.0, < 4.0)
signet (~> 0.9)
google-cloud-core (1.3.0)
google-cloud-core (1.4.1)
google-cloud-env (~> 1.0)
google-cloud-env (1.2.0)
google-cloud-env (1.3.0)
faraday (~> 0.11)
google-cloud-storage (1.16.0)
digest-crc (~> 0.4)
Expand All @@ -103,12 +103,12 @@ GEM
httpclient (2.8.3)
json (2.2.0)
jwt (2.1.0)
memoist (0.16.0)
mime-types (3.2.2)
memoist (0.16.1)
mime-types (3.3)
mime-types-data (~> 3.2015)
mime-types-data (3.2019.0331)
mini_magick (4.5.1)
multi_json (1.13.1)
mime-types-data (3.2019.1009)
mini_magick (4.9.5)
multi_json (1.14.1)
multi_xml (0.6.0)
multipart-post (2.0.0)
nanaimo (0.2.6)
Expand All @@ -122,14 +122,14 @@ GEM
uber (< 0.2.0)
retriable (3.1.2)
rouge (2.0.7)
rubyzip (1.2.3)
rubyzip (1.3.0)
security (0.1.3)
signet (0.11.0)
signet (0.12.0)
addressable (~> 2.3)
faraday (~> 0.9)
jwt (>= 1.5, < 3.0)
multi_json (~> 1.10)
simctl (1.6.5)
simctl (1.6.6)
CFPropertyList
naturally
slack-notifier (2.3.2)
Expand All @@ -146,7 +146,7 @@ GEM
unf_ext (0.0.7.6)
unicode-display_width (1.6.0)
word_wrap (1.0.0)
xcodeproj (1.10.0)
xcodeproj (1.13.0)
CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.3)
claide (>= 1.0.2, < 2.0)
Expand All @@ -165,4 +165,4 @@ DEPENDENCIES
fastlane-plugin-badge

BUNDLED WITH
2.0.1
2.0.2
1 change: 1 addition & 0 deletions external/libzip/libzip.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -467,6 +467,7 @@
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = DCE93FD921FCA42B000E14F2;
productRefGroup = DCE93FE421FCA42C000E14F2 /* Products */;
Expand Down
3 changes: 3 additions & 0 deletions fastlane/Fastfile
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,9 @@ platform :ios do
short_hash = commit[:abbreviated_commit_hash] # short sha of commit
sh "curl https://badgen.net/badge/Bitrise/" + short_hash + "/blue > badge.svg"
sh "brew install librsvg"
sh "brew unlink pango"
sh "brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/7cf3b63be191cb2ce4cd86f4406915128ec97432/Formula/pango.rb"
sh "brew switch pango 1.42.4_1 "
sh "rsvg-convert badge.svg > badge.png"
sh "badge --custom badge.png --glob /../**/*.appiconset/*.{png,PNG}"

Expand Down
Binary file added fastlane/screenshots/ar/keyword.strings
Binary file not shown.
Binary file added fastlane/screenshots/ar/title.strings
Binary file not shown.
Binary file added fastlane/screenshots/en-GB/keyword.strings
Binary file not shown.
Binary file added fastlane/screenshots/en-GB/title.strings
Binary file not shown.
Binary file modified fastlane/screenshots/gl/keyword.strings
Binary file not shown.
Binary file added fastlane/screenshots/lv/title.strings
Binary file not shown.
Binary file added fastlane/screenshots/zh-Hans/title.strings
Binary file not shown.
2 changes: 1 addition & 1 deletion ios-sdk
Submodule ios-sdk updated 37 files
+23 −6 doc/CONFIGURATION.md
+53 −2 ownCloudSDK.xcodeproj/project.pbxproj
+6 −1 ownCloudSDK/App Identity/OCAppIdentity.h
+24 −3 ownCloudSDK/App Identity/OCAppIdentity.m
+29 −0 ownCloudSDK/App Identity/UIDevice+ModelID.h
+52 −0 ownCloudSDK/App Identity/UIDevice+ModelID.m
+42 −0 ownCloudSDK/Authentication/Browser Session/OCAuthenticationBrowserSession.h
+55 −0 ownCloudSDK/Authentication/Browser Session/OCAuthenticationBrowserSession.m
+38 −0 ownCloudSDK/Authentication/Browser Session/UIWebView/OCAuthenticationBrowserSessionUIWebView.h
+178 −0 ownCloudSDK/Authentication/Browser Session/UIWebView/OCAuthenticationBrowserSessionUIWebView.m
+4 −0 ownCloudSDK/Authentication/OCAuthenticationMethodOAuth2.h
+57 −3 ownCloudSDK/Authentication/OCAuthenticationMethodOAuth2.m
+2 −2 ownCloudSDK/Core/Connection Status/Network Path Monitor/OCCoreNetworkPathMonitorSignalProvider.m
+3 −0 ownCloudSDK/Core/FileProvider/OCSyncAction+FileProvider.m
+1 −1 ownCloudSDK/Core/OCCore.h
+16 −1 ownCloudSDK/Core/Sync/Actions/CreateFolder/OCCore+CommandCreateFolder.m
+7 −9 ownCloudSDK/Core/Sync/Actions/Upload/OCCore+CommandLocalImport.m
+2 −1 ownCloudSDK/Core/Sync/OCCore+SyncEngine.h
+15 −2 ownCloudSDK/Core/Sync/OCCore+SyncEngine.m
+3 −0 ownCloudSDK/Core/Sync/Record/OCSyncRecord.h
+5 −0 ownCloudSDK/HTTP/Pipeline/OCHTTPPipeline.h
+53 −1 ownCloudSDK/HTTP/Pipeline/OCHTTPPipeline.m
+6 −1 ownCloudSDK/KV Store/OCKeyValueStore.h
+52 −2 ownCloudSDK/KV Store/OCKeyValueStore.m
+37 −0 ownCloudSDK/OCFeatureAvailability.h
+1 −0 ownCloudSDK/OCTypes.h
+1 −1 ownCloudSDK/Settings/Sources/OCClassSettingsFlatSourceEnvironment.m
+1 −1 ownCloudSDK/Toolkit/OCProcessManager.h
+35 −0 ownCloudSDK/Vaults/Database/OCDatabase+Schemas.m
+64 −5 ownCloudSDK/Vaults/Database/OCDatabase.m
+3 −0 ownCloudSDK/Vaults/OCVault+Internal.h
+9 −0 ownCloudSDK/Vaults/OCVault+Internal.m
+9 −1 ownCloudSDK/Vaults/OCVault.h
+7 −0 ownCloudSDK/Vaults/OCVault.m
+1 −0 ownCloudSDK/ownCloudSDK.h
+1 −1 ownCloudSDKTests/ItemPolicyTests.m
+4 −0 ownCloudUI/openssl/framework/openssl.xcodeproj/project.pbxproj
2 changes: 1 addition & 1 deletion ownCloud File Provider/FileProviderEnumerator.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@

@class FileProviderExtension;

@interface FileProviderEnumerator : NSObject <NSFileProviderEnumerator, OCQueryDelegate>
@interface FileProviderEnumerator : NSObject <NSFileProviderEnumerator, OCQueryDelegate, OCLogTagging>
{
__weak FileProviderExtension *_fileProviderExtension;

Expand Down
18 changes: 15 additions & 3 deletions ownCloud File Provider/FileProviderEnumerator.m
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ - (void)_startQuery
{
// Start query
self->_query = [OCQuery queryForPath:queryPath];
self->_query.includeRootItem = YES;
self->_query.includeRootItem = queryPath.isRootPath; // Include the root item only for the root folder. If it's not included, no folder can be created in the root directory. If a non-root folder is included in a query result for its content, the Files Duplicate action will loop infinitely.
self->_query.delegate = self;

[DisplaySettings.sharedDisplaySettings updateQueryWithDisplaySettings:self->_query];
Expand Down Expand Up @@ -322,9 +322,11 @@ - (void)provideItemsForChangeObserverFromQuery:(OCQuery *)query

- (void)queryHasChangesAvailable:(OCQuery *)query
{
OCLogDebug(@"##### Query for %@ has changes. Query state: %lu", query.queryPath, (unsigned long)query.state);
OCLogDebug(@"##### Query for %@ has changes. Query state: %lu, SinceSyncAnchor: %@, Changes available: %d", query.queryPath, (unsigned long)query.state, query.querySinceSyncAnchor, query.hasChangesAvailable);

if ((query.state == OCQueryStateContentsFromCache) || ((query.state == OCQueryStateWaitingForServerReply) && (query.queryResults.count > 0)) || (query.state == OCQueryStateIdle))
if ( (query.state == OCQueryStateContentsFromCache) ||
((query.state == OCQueryStateWaitingForServerReply) && (query.queryResults.count > 0)) ||
(query.state == OCQueryStateIdle))
{
dispatch_async(dispatch_get_main_queue(), ^{
@synchronized(self)
Expand Down Expand Up @@ -422,4 +424,14 @@ - (void)currentSyncAnchorWithCompletionHandler:(void (^)(NSFileProviderSyncAncho
// - (void)finishEnumeratingWithError:(NSError *)error;
// }

+ (NSArray<OCLogTagName> *)logTags
{
return (@[ @"FPEnum" ]);
}

- (NSArray<OCLogTagName> *)logTags
{
return (@[ @"FPEnum", OCLogTagInstance(self)]);
}

@end
Loading

0 comments on commit 3b43c00

Please sign in to comment.