Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[feature/settings-metadata] Class Settings Metadata support #838

Merged
merged 73 commits into from
Dec 21, 2020

Conversation

felix-schwarz
Copy link
Contributor

@felix-schwarz felix-schwarz commented Nov 20, 2020

Description

Support for class settings metadata.

Related Issue

owncloud/ios-sdk#71
Refresh of #831 (which wouldn't refresh to the latest branch HEAD)

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)

QA

Report: #838 (comment)

hosy and others added 30 commits October 2, 2020 12:01
…ovider (#809)

* [feature/drag-drop-setting] Setting to disable dragging files inside the app (#643)

* #581 Added new setting to disable dragging files inside the app

* addressed CR findings and changed the title and the default value

* changed variable name for prevent dragging files and folders

* - update SDK
	- adapt BookmarkViewController to latest OCBookmarkManager usage patterns
- improve Illustrator ".ai" support
	- override for failing iOS MIMEType -> UTI conversion in FileProvider (-> fix grayed out items in Files app)
	- add "application/illustrator" mime type to PDFViewerViewController to allow viewing Illustrator files in-app
- improved sorting
	- replace "type" with "kind" to match Files app and change method:
		- sort by type (folder / file)
		- if identical: sort by suffix (with fallback to MIMEType if no suffix is available)
		- if identical: use "_various" for comparison

* Using creationDate instead of modificationDate (#668)

Change shall avoid upload of duplicated photos since e.g. modificationDate can change if the photo was edited.

Co-authored-by: Michael Neuwert <mn@neuwert-media.com>
Co-authored-by: Matthias Hühne <mhuehne@owncloud.com>

* Update documentation to reflect changes in instant photo upload (#677)

* Document task scheduling

This relates to https://github.com/owncloud/ios-app/pull/484 and
https://github.com/owncloud/docs/issues/1900.Document task scheduling

This relates to https://github.com/owncloud/ios-app/pull/484 and
https://github.com/owncloud/docs/issues/1900.

* Document task scheduling

This relates to https://github.com/owncloud/ios-app/pull/484 and
https://github.com/owncloud/docs/issues/1900.Document task scheduling

This relates to https://github.com/owncloud/ios-app/pull/484 and
https://github.com/owncloud/docs/issues/1900.

* Update docs/modules/ROOT/pages/ios_task_scheduling.adoc

Co-Authored-By: Phil Davis <phil@jankaritech.com>

* Update docs/modules/ROOT/pages/ios_task_scheduling.adoc

Co-Authored-By: Phil Davis <phil@jankaritech.com>

* Changed documentation to reflect changes in instant photo upload

Co-authored-by: Matthew Setter <matthew@matthewsetter.com>
Co-authored-by: Matthew Setter <settermjd@users.noreply.github.com>
Co-authored-by: Matthew Setter <matthew.setter@gmail.com>
Co-authored-by: Phil Davis <phil@jankaritech.com>
Co-authored-by: Michael Neuwert <mn@neuwert-media.com>

* [feature/improve-public-link-creation] Improve creation of public link (#673)

* #671 Improve creation of public link
- enable dragging public link
- added clear button on public link name
- copy link to clipboard, after link was created

* - added in-app notifications to the app
- show a notification if a public or private link was copied to the clipboard

* implemented own notification banner class to show in-app notifications without a need of local notification permissions

* resolved crash

* - implemented own animator class
- renamed class
- added completion handler on dismissal
- added shadow

* [fix/audio-stop-playing] Stop playing Audio when item loosing focus (#686)

* #683 fix stop playing audio, when scrollview was swiped to next item, play again, when come back to the audio item

* moved code to given delegate methods

* [fix/round-shape-button] Fix round shape for pin code buttons (#689)

* #654 bring back the round shape to the button, after changes in super class

* added a new enum type to set corner radius with enum values

* [feature/folders-first] Option to show folders at the top (#680)

* - add "Show folders at the top" option in Settings
- fix DisplaySettings change propagation within the same process (relevant when using multiple scenes on iPadOS)
- restructure SortMethod and add support to show folders at the top for all sort methods

* - Update CONFIGURATION.md to include new and previously undocumented configuration options

* [feature/resign-script] Resign Script  (#690)

* Resign script with instructions how to resign an IPA file with an other certificate and provisioning profiles

* Using correct markdown format

* changed formatting for better readability

* Updated readme file

* changed new lines

* changed formatting

* changed formatting

* changed wording

* - changed folder structure
- added a parameter check for the signing method

* - show available certificate identities in usage
- check provisioning profiles fingerprint if matches with signing identity fingerprint

* [iOS] Open private link in app (#609)

* Adapted to latest SDK changes in develop branch

* Implemented support for private links

- Support for opening links using custom URL scheme owncloud://
- Support for associated domains added
- Test associated domain configured

* Some small fix for presenting linked item

* Fixed an issue with universal links not being opened if the app was terminated in iOS13

* Triggering item download if necessary when core connection status changes to online

* Added a comment requested in code review

* Fixed build issues

* Iterating through multiple bookmarks possibly related to same URL

* Fixed review finding

* Fixed various swift Lint findings

* Fixed minor swift lint warnings

* - Licensing: add finishTransaction call for SKPaymentTransactionStateRestored transactions

* Fixes an issue with private link not being opened

This would happen in case user has kept opened a card with actions (via 3 dots button)

* Removed dead code and ensured that no item is opened at next launch if user returns to server list

* Handling going back in state restoration

* Added error message in case link can’t be resolved

* Swiflit trailing space warnings fixed

* - Update SDK to resolve issues

* Made download dependant on state of the connection

More reliable download mechanism for file previews:
- Trigger download only if network connectivity is available
- React to connection state changes

* Fixed an issue with owncloud:// schemed links not opened

* Trying to trigger download when network becomes available

* Fixed swift lint warning

* Avoiding multiple update of display view state

* Updated to the latest SDK

* Fixed an issue with DispatchGroup.leave() sometimes not being called

* Adapted for a new connection status .connecting

* Some swift lint warnings fixed

* Some refactoring in the DisplayViewController

* Tried to make DisplayViewController more maintenance friendly

- Code restructuring
- Handling of connection status
- Re-worked view state handling
- Tried to unwind some deeply nested hard to understand if conditions

* Included a fix in the SDK which brings back missing parent OCItems

* Showing “Connecting…” before OCCore switches connection status to online

* Several small changes

* Improved private link handling

- Refactored to avoid unnecessary code duplication
- Improved error messages
- Showing progress HUD while link is being resolved since it might take time espeially with multiple configured bookmarks and so on

* Updated to the develop/latest SDK revision

* Changed how error message is chosen if the item for private link is not found

* Using OCCoreConnectionStatusSignal instead of OCCore.connectionStatus

* Fixed “Connecting…” visual glitch and added spinner shown while connecting

* Fixed opening of app registered scheme on iOS13

As well as eventually a bug concerning file imports in case the app was not launched

* Added a delay for iOS 12.x for the private link resolution

So when the root view controller is instantiated it might already start some operations like opening a root of bookmark etc. Otherwise it would probably require some complex coordination managed centrally. On iOS 13 such hack would be unnecessary since there UIApplicationDelegate callbacks are not used anymore.

* Improvement for QA finding

If the bookmark to which private link has pointed is not configured,  wrong error message has been shown

* Fixed an issue with incorrect error message being shown

In case item was removed

* Fixed an issue with file previews

- Not downloading by default if file can’t be previewed
- Downloading and opening files which can be previewed by QLPreviewController

* Fixed an issue with renderSpecificView() called at inapropriate time

Co-authored-by: Michael Neuwert <mn@neuwert-media.com>
Co-authored-by: Felix Schwarz <fs-git@iospirit.com>

* new version and build number

* - Update SDK to add latest SDK HTTP request/response logging improvements

* Fixed some issues with VoiceOver / accessibility labels (#701)

* Set accessibility properties on the actions menu drag handle

* Fixed accessibility label for the favorite / unfavorite button

* Fixed wrong order of accesibility labels for star button (favorite)

* Added accesibility label for button activating multiple item selection

* Added proper accessibility labels to the toolbar items

* added mouse pointer hover effect to drag view

Co-authored-by: Michael Neuwert <mn@neuwert-media.com>
Co-authored-by: Matthias Hühne <github@hosy.de>
Co-authored-by: Matthias Hühne <mhuehne@owncloud.com>

* - Update SDK to add preliminary/experimental TUS support

* show view controllers as formSheet, because fullscreen is to large for this small view on the iPad

* Take Photo or Video and Upload (#707)

* First draft of take photo and upload feature

* Don’t allow image editing when taking new pic

* Next iteration of “Take photo or video”

- Preserving image meta-data
- Conversion HEIC -> JPEG depending on media upload settings
- Conversion MOV -> MP4
- Localized action name

* Fixed media naming and added some error logs

* Some cosmetic code changes

* Changed keyboard shortcut to Cmd+Shift+3

* Added logs to camera upload action

* Added progress hud in case photo / video export would take longer

* Added more logs

* Added a check for HEIC support

Warning added to the log in case HEIC is not supported

Co-authored-by: Michael Neuwert <mn@neuwert-media.com>
Co-authored-by: Matthias Hühne <mhuehne@owncloud.com>

* - update SDK to include JSON logging options
- add Xcode scheme env var templates to simplify testing

* [feature/contextual-menu] Contextual Menu for File List Items (#718)

* Correct some typos (#620)

Fix small errors in typos

Co-authored-by: Matthias Hühne <mhuehne@owncloud.com>

* add extra check in release checklist, to avoid missing translations in some languages (#640)

Co-authored-by: Matthias Hühne <mhuehne@owncloud.com>

* Fix docs build errors (#666)

Co-authored-by: Matthias Hühne <mhuehne@owncloud.com>

* #717 Implemented a contextual menu for the file list which includes the same items as the more menu card

* - UIMenu title removed
- use table row label color as image tint color (UIMenu background color is wrong in simulator and dark mode)

* solved tint color problems for UIAction icon

* fixed wording and localization

Co-authored-by: Carlos Damken <carlos@damken.com>
Co-authored-by: Jesús Recio <jrecio@solidgear.es>
Co-authored-by: Matthew Setter <matthew.setter@gmail.com>

* Fix for the resign script (#721)

- Do not embed entitlements into library binaries when signing frameworks. Otherwise leading to validation issue with AppStore Connect.
- Set NSExtensionFileProviderDocumentGroup to appropriate app group. This was missing

Co-authored-by: Michael Neuwert <mn@neuwert-media.com>

* Another fix for resigning script

Delete tmp.plist after it is no longer being used, otherwise leads to ITMS-90048 Bundle is invalid.

* Support changing the format of uploaded image file names (#687)

* Improved various aspects of media uploads

- Changed a way how assets are exported which photo uploads significantly faster
- Refactored PHAsset+Upload.swift extensions which is now way more readable.
- Improved naming of assets
- Changed default naming of uploaded assets to the scheme legacy app was using
- Added an option allowing to preserve “original” asset names as used by iOS photo library
- Prepared code for future enhancments (exporting additional assets like RAW images and live photo video clips

* Localization of strings and other tiny changes

* Made a mechanism deriving original media asset name more reliable

* Fixed requesting image data

* Using PHAsset.creationDate as lastModifiedDate when uploading media asset

The timestamp is then set into corresponding property in the WebDAV request allowing to have proper file creation date when uploaded to oC server instance.

* Picking edited version of the photo when uploading by default

* Moved files around to have a cleaner structure in Xcode

* Using PHAssetResourceManager for export whenever possible

* Fixed small issues

* Corrected some comments

* Fixes issue (1) found in QA testing

Fixed duplicated .MP4 extension when uploading videos

Co-authored-by: Michael Neuwert <mn@neuwert-media.com>
Co-authored-by: Felix Schwarz <fs-git@iospirit.com>

* Fixed 1.4 branch

* - update SDK to include tus creation-with-upload support
- add additional env parameters for logging, auth methods

* - update SDK to fix infinite loops when hitting a redirect or certificate issue, eliminating redundant issues, respecting and remembering choices to either retry or put the connection offline

* [fix/various] Various fixes (#713)

* - FileProvider: extend hardcoded MIME/Suffix -> UTI maps so files of these types are properly displayed in the Files app

* - add new ItemContainer protocol allowing the retrieval of an item from another object
- UIImageView+Thumbnails
	- fix item version comparison for thumbnails requested from the SDK (using ItemContainer)
	- add item version comparison for thumbnails generated locally via QLThumbnailGenerator (using ItemContainer)

* - Update SDK

* - sharing items will be shown as subsection in contextual menu
- only show sharing items, if sharing is enabled and core is online

* changed image for rename menu item to pencil on > iOS 13

* Fixes for markup and PDF viewer (#730)

* Activate editing mode in viewDidAppear()

Sort of a hack but there is apparently no other way of achieving this

* Display more button in the PDF viewer. Preserving already configured UIBarButtonItem instances when adding more button.

* Re-rendering content if it has got modified locally

E.g. user could open markup editor and scribble on picture or PDF. Without this fix, he would need to go back to the file list and re-open document to see the changes.

* Fix for auto-tapping markup button

Co-authored-by: Michael Neuwert <mn@neuwert-media.com>

* fixes malformed file

* fixed code signing:
- use entitlements from app binary instead of provisioning profile
- set app values from provisioning profile to entitlements file
- only set NSExtensionFileProviderDocumentGroup for File Provider extension

* Include new dialog to encourage users to add a new app review in App Store  (#728)

* Added all bits and pieces for app review request

* Fix for a review task not being run

* Changed the way review prompt is presented

* Fixed review findings

* Corrected sign of time interval properties

* Another sign for time interval corrected

* Corrected the way review is requested

Co-authored-by: Michael Neuwert <mn@neuwert-media.com>

* [feature/auth-migration] Authentication Method Migration (#682)

* - OCBookmark+Extension
	- clean up OCBookmarkUserInfoKeys and move them to their own extension
	- add new OCBookmark.scanForAuthenticationMethodsRequired to mark bookmarks as needing a scan for available auth methods before editing
- BookmarkViewController
	- add support for OCBookmark.scanForAuthenticationMethodsRequired
- ClientRootViewController
	- add scan for available authentication methods once when encountering an authorization error
	- rename "Ignore" to "Continue offline"
	- extend ClientRootViewControllerAuthenticationDelegate to include preferredAuthenticationMethods
	- prepare for inline authentication data (username + password - or -  tokens) gathering in the next step

* - Client: add support for handling auth failures inline, without dropping out of the connection:
	- ClientAuthenticationUpdater
		- offers high-level abstraction
		- ties together token-/web-based auth UI and password-based auth UI (ClientAuthenticationUpdaterViewController)
	- ClientAuthenticationUpdaterViewController
		- view controller specialized in requesting a password from the user

* - Update SDK

* - ClientRootViewController: add support for OCCoreConnectionStatus.connecting

* - Update SDK

* - ClientAuthenticationUpdater: add check for .preferredAuthenticationMethodIdentifiers to .canUpdateInline
- ClientRootViewController: add support for plain HTTP bookmarks to authentication method scan
- add additional logging

Co-authored-by: Matthias Hühne <github@hosy.de>

* iOS13 gesture based multiple selection (#734)

* iOS13 gesture based multiple selection

- In file list view (2 finger pan)
- In photo selection grid view (1 finger or 2 finger pan)

* Disable gesture based multi-selection if prevent dragging optin is active

* changed option title and added a subtitle with a short description

* using better wording

Co-authored-by: Michael Neuwert <mn@neuwert-media.com>
Co-authored-by: Matthias Hühne <github@hosy.de>

* [feature/emm] EMM version support (#706)

* Add EMM support:
- new OCLicenseEMMProvider
	- unlocks all pro features if the main bundle ID (as found in the app's or app extension's Info.plist) ends with either "-emm" or ".emm"
	- OCLicenseEMMProvider.isEMMVersion provides information on whether the app is an EMM version
- Licensing Setup: if the app is an EMM version, no App Store IAP provider is set up/added
- Settings: for EMM versions, don't show the "Pro Features" or "Purchases" entries

* - added new fastlane lane to build a emm version of the iOS app
- using the new fastlane file from migration bundle-id branch

* init fastlane deliver action to get the current metadata from the app store to prepare for different apps uploads (regular iOS app and EMM version)

* new fastlane action to parse the release notes plist file

* - new fastlane lane too upload regular and emm iOS build to the AppStore, before release note, screenshots can be created automatically
- new fastlane action to generate the release notes from the ReleaseNotes.plist
- added new options for fastlane lane

* show suffix "EMM" on settings, support mail, when the app was a EMM build

* - fixed signing issues
- changed copyright date
- removed app name metadata template, because of conflicts when using different apps
- updated release notes

* - added app icon for emm version
- exchange app icon with emm version before building
- added a description.txt metadata file for emm app version

* - added app icon for emm app (AppStore Connect upload)
- moving description and app icon for metadata upload
- uncomment code after testing

* new app icon for emm version

* fixed app icon dimensions

* using function from OCLicenseEMMProvider

* enable binary upload on deliver action for emm build

* using newest SDK, to prevent using UIWebView

* updated app version number

Co-authored-by: Matthias Hühne <github@hosy.de>

* Removed test configuration of associated domains

* Instant Uploads part II + more (#714)

* Improved various aspects of media uploads

- Changed a way how assets are exported which photo uploads significantly faster
- Refactored PHAsset+Upload.swift extensions which is now way more readable.
- Improved naming of assets
- Changed default naming of uploaded assets to the scheme legacy app was using
- Added an option allowing to preserve “original” asset names as used by iOS photo library
- Prepared code for future enhancments (exporting additional assets like RAW images and live photo video clips

* Localization of strings and other tiny changes

* Made a mechanism deriving original media asset name more reliable

* Fixed requesting image data

* Using PHAsset.creationDate as lastModifiedDate when uploading media asset

The timestamp is then set into corresponding property in the WebDAV request allowing to have proper file creation date when uploaded to oC server instance.

* Picking edited version of the photo when uploading by default

* Moved files around to have a cleaner structure in Xcode

* Using PHAssetResourceManager for export whenever possible

* Fixed small issues

* Corrected some comments

* Some small refactoring changes

* Add support for cellular transfer settings
- rename StorageSettingsSection to DataSettingsSection to extend scope
- add row and cellular transfer summary to DataSettingsSection
- add new CellularSettingsViewController to present and allow control over cellular settings

* - Update SDK with cellular switch improvements

* - Update SDK to adjust concurrency budgets for sync action so that wifi-only up-/downloads can't block cellular up-/downloads entirely

* Moved media upload settings into separate view

- New view for media upload settings
- Split settings into sections: Export, Auto Upload
- Changed appearance of the Upload Path setting
- Code refactoring changes

* Fixed swift lint warning

* Added cellular switch for media uploads

* Separate configuration for video auto-upload

Added posibility to select different account / path for video auto-uploads

* Fixed small issue in video upload

* Improved the UX for photo album view in upload

- Improved the way thumbnails are requested
- While view is active thumbnails for albums are cached
- Added activity indicator which is shown while albums are being fetched from photo library

* Uploading media from iCloud

- Showing cloud based photo albums in the selection UI
- Ability do upload media which is not available locally

* Improved vide exporting code

* Showing camera roll first in list of albums

* Refactored the method for asset fetching into separate extension

* Media upload queue refactoring

- More modular design and more maintainable code
- Started using OperationQueue for individual imports and created dedicated Operation subclass

* Forgot to add license header

* Small tweaks in media upload queue

- Changed import queue QoS to utility
- Added another cancellation point for MediaUploadOperation

* Configured main thread checker not to stop on first hit

* Background media uploads

- Improved and extended settings UI
- Using both BackgroundTasks and background location to enable background media uploads
- Local notifications informing about background uploads

* Fixed few issues concerning auto-upload settings

* Fixed some issues and added cellular switch for videos

- Some code refactoring in PHAsset export code
- Calling the upload completion handler when placeholder item is created allowing MediaUploadQueue to proceed

* Fixed an issue with photoLibraryChangeDetected flag reset at inappropriate time

* Improved wording in background upload settings

* Refactored local notifications in separate category

* Fixed swift lint warnings

* Cleaned up code

* Improved task scheduling code

* Re-added AVAsset extension

* Don’t show auto-upload settings if no accounts are configured

* Small improvements

- Wording for background location on iOS13 changed
- Added cell identifiers for easier creation of UI tests

* Fix of UI test was necessary since settings have moved

* Additional test for auto-upload settings added

* Fixed remaining failing UI tests

* Implemented CLLocationManagerDelegate error callback

* Re-applied a fix lost during merging

* Changed a way location tracking is initiated

- Start when app is going into background
- Stop when app is foreground
- Switch from significant location to visit monitoring

* Fixed review findings

* Removed a WiFi requirement from pending media upload task

* Removed some unused code

* Added more logs

* - add experimental option to force-enable background NSURLSession usage in the app
- in code, change all instances of the usage of the term "master" to "main"

* Removed an option allowing background NSURLSession

* Change the way background upload settings behave

* Removed background upload settings

Commented out and added a TODO

* Fixed some swift lint warnings

* Fixed review finding

* Only show bookmark / path if instant upload is enabled

Co-authored-by: Michael Neuwert <mn@neuwert-media.com>
Co-authored-by: Felix Schwarz <fs-git@iospirit.com>

* [feature/cellular-switch] Cellular transfer options (#709)

* Correct some typos (#620)

Fix small errors in typos

Co-authored-by: Matthias Hühne <mhuehne@owncloud.com>

* Add support for cellular transfer settings
- rename StorageSettingsSection to DataSettingsSection to extend scope
- add row and cellular transfer summary to DataSettingsSection
- add new CellularSettingsViewController to present and allow control over cellular settings

* - Update SDK with cellular switch improvements

* - Update SDK to adjust concurrency budgets for sync action so that wifi-only up-/downloads can't block cellular up-/downloads entirely

* - Update SDK with new prefixed-HTTP/single-line logging options
- Add new scheme options to selectively turn off single-line and prefixed HTTP logging

* - Update SDK to include logging improvements

* add extra check in release checklist, to avoid missing translations in some languages (#640)

Co-authored-by: Matthias Hühne <mhuehne@owncloud.com>

* - Update SDK

* - in code, change all instances of the usage of the term "master" to "main"
- update SDK

* - removal of iOS 11 support (including SFAuthenticationSession) and updating to iOS 12+ APIs, adaption of docs where needed
- migration from MobileCoreServices to CoreServices
- drop deprecated serialization APIs in AppLockManager and FileProvider
- Cellular Options
	- display a message if cellular transfers have been disabled via MDM
	- adopt updated SDK to include cellular option improvements

* - Update message in Cellular Settings and dynamically show/hide it depending on whether the main switch is enabled or not

Co-authored-by: Carlos Damken <carlos@damken.com>
Co-authored-by: Matthias Hühne <mhuehne@owncloud.com>
Co-authored-by: Jesús Recio <jrecio@solidgear.es>

* [feature/app-version-clipboard] App Version Infos to Clipboard (#741)

* #740 moved app version infos from footer to a row to perform a copy action to the clipboard with app version infos

* - fixed localization
- removed unneeded completion block

* removed target ownCloud File Provider UI, because this was never used
Deletion of this target solves a problem when building with fastlane (code signing error)

* [fix/missing-file-list-actions] Implements missing actions in Quick Access file list (#743)

* #733 some actions like contextual menu, multiple selection and swipe actions was missing in the generic file list class. Moved missing code to super class or super-super class.

* moved table view row swipe actions to parent class

* [feature/message-queue] Message Queue to allow flexible handling of issues and messages (#662)

* - ClientRootViewController: do not add dot to the end of the short connection status description if it already has one
- UIImageView+Thumbnails: fix retain loop, leading to leaking an OCCore - and all possible issues relating to that

* - Update to latest SDK

* - Update SDK and adapt ProgressSummarizer for new event type

* - Fix core-stop-blocking share reload query retain loop via SDK update

* - add permission checks to CreateFolderAction, DeleteAction, DocumentEditingAction, MoveAction, RenameAction, ScanAction and UploadBaseAction, so they are unavailable if permissions aren't sufficient for their usage
- add alert to inform the user that no actions are available in cases where no actions are available for a folder and the user presses the folder action "+" button

* - Update SDK

* fixed QA finding (1) #623

* Fix for QA issue (2)

Media upload settings shall not allow selection of the upload folder which lacks required Permissions

* #623 QA finding (6) allow Markup it at least one permission is available and restrict save actions to available permissions

* - address issue (1) using ActionContext.query.rootItem

* OCCore+Extension.swift:
- remove items from OCShareQueries where they are not used by the core to avoid warnings in the log
- add option for partial matches to sharesSharedWithMe() via allowPartialMatch option

PublicLinkTableViewController.swift:
- take advantage of allowPartialMatch option
- determine share nested the deepest to determine permissions (fixes finding 84) in #632

* - Update SDK

* - avoid using ":", "/" and "\" in localized time stamp of auto-created file names for document scanning, using "-" instead
- update SDK

* - DisplayViewController
	- make sure content is updated as new versions become available (fixing #630)
- FileProvider
	- make use of new SDK OCClaimLockTypeRead to encourage automatic file updates for opened files
- SDK update

* - Update SDK

* - Update SDK

* - DisplayViewController:
	- update for local changes, tracking the last modified date of the local file
	- source:didSet: remove duplicate/out-of-sync checks

* - EditDocumentViewController: fixing tabs, refresh when source file changes
- DisplayViewController: clarify code, add debug output
- OCItem+Extension: new OCItem.contentDifferent(than:core:) to determine whether the content of an item has likely changed based on two OCItem, based on identifiers and size, adapt OCItem.displaysDifferent(than:in:) to use the new method.

* - Change method to refresh QLPreviewController to .reloadData() as it works more reliable

* - Update SDK

* - Initial support for message queue

* - wrote down UI integration ideas

* - ownCloudApp framework
	- NotificationManager: provides necessary infrastructure for local notifications
	- NotificationMessagePresenter: an OCMessagePresenter using local notifications
- File Provider
	- temporarily drop all early-error-catching code to allow debugging messages
- Client
	- ClientActivityViewController: added support for display of OCMessages
	- ClientRootViewController:
		- added notificationPresenter and issueMessagePresenter
		- added presentAlertAsCard(viewController:withHandle:dismissable:) to present view controllers using the alertQueue
	- rewrite MessageCell to use the new AlertView instead
- Messages
	- AlertView and AlertViewController provide alert views suitable for showing as a card or inline in a table
	- CardIssueMessagePresenter: an OCMessagePresenter presenting messages as a card
	- SyncIssueMessagePresenter: an OCMessagePresenter bridging messages to the legacy OCIssue interface
- ServerListTableViewController: provide option for auto resolution using a particular error
- Fixes
	- MediaUploadQueue: fix deadlock and make sure the tracking doesn't stop prematurely (also resulting in a deadlock)
	- ProgressSummarizer: fix dangling pointer warning

* - Update SDK to incorporate ocis OIDC change

* Various fixes:
- SwiftLint: add implicit_getter to disabled_rules as it is broken and produces false positive warnings
- MediaUploadQueue: fix deadlock and avoid premature end of tracking (resulting in a hung/dysfunctional app)
- ProgressSummarizer: fix warning
- FileProviderExtension: adopt new lock type API

* - Update SDK to include OCAuthenticationMethodOpenIDConnect changes for ocis

* - WebViewDisplayViewController: add support for content updates, clean up code
- PreviewViewController: add support for content updates, clean up code

* - ImageDisplayViewController: add support for image file updates
- MediaDisplayViewController: fix indentation
- PDFViewerViewController: add support for file updates, fix indentation

* - CardIssueMessagePresenter: option to only show one message at once

* - Update SDK for latest improvements

* - AppDelegate: register notification categories at launch
- ClientRootViewController: add and remove presenters at core start/stop
- RoundedLabel: clean up and add styling support via Style struct and switch all usages of RoundedLabel over to new syntax
- ServerListTableViewController
	- track message count on a per-bookmark basis
	- update app icon badge count
	- broadcast change notifications
- ServerListBookmarkCell: add message count badge
- DisplayHostViewController & QueryFileListTableViewController: stop observation of OCQuery.state before stopping OCQueries
- MessageSelector: make filtering optional to allow for usage without filtering
- NotificationManager
	- add support to create and register notification categories based on registered OCSyncIssueTemplates
	- add support for routing and handling notification responses via ComposeNotificationIdentifier() and NotificationResponseHandler category
- NotificationMessagePresenter: implement NotificationResponseHandler category to feed back notification responses to OCMessageQueue

* - ClientRootViewController: rename card message presenter var
- ClientSessionManager: new class to keep track of active client sessions and route messages for presentation. All ClientRootViewController instances should henceforth be created through it
- CardIssueMessagePresenter: add bookmark UUID to .identifier and adapt to new presentation completionHandler
- ServerListTableViewController
	- add support for ClientSessionManager delegation
	- add support for presenting messages after successful login
- SyncIssueMessagePresenter: add bookmark UUID to .identifier and adapt to new presentation completionHandler
- NotificationMessagePresenter
	- add bookmark UUID to .identifier and adapt to new presentation completionHandler
	- implement endPresentationOfMessage to remove notifications for removed messages
	- add support for taps on notifications

* - SDK update
- ClientSessionManager: change showMessage(notification:) and ClientSessionManagerDelegate from binary to based on priorities
- AlertView and AlertViewController: add optional header view and label
- CardIssueMessagePresenter: show bookmark .shortName as header for messages not belonging to the presenter's bookmark
- SceneDelegate and ThemeWindow: tracking which window is visible and in foreground
- ServerListTableViewController > ClientSessionManagerDelegate:
	- take foreground status into account when computing the presentation priority
	- add support for presenting messages from other accounts, based on foreground status and availability of "unused" scenes

* - Update SDK

* Add support for grouping messages:
- new MessageGroup class to store messages in groups
- MessageGroupCell replaces MessageCell
	- improve performance
	- add alternative layout for groups with more than one message:
		- switch to apply a choice to more than one message; badge count if switch is on
		- button to show all messages
- extend MessageSelector with support for maintaining MessageGroups
- MessageTableViewController to show messages as a list of individual messages

* - Update SDK

* - Update SDK

* - remove SyncIssueMessagePresenter as it is not used
- show messages only if they haven't already been resolved (previously shown until removed from the queue)
- update code to use OCMessage properties rather than OCMessage.syncIssue, replacing OCSyncIssue dependant code whereever possible
- add MessageQueueExample.swift to show how to use OCMessageQueue from within the app
- fix bug where messages without categoryIdentifier would be grouped together

* FileProvider changes:
- re-instate local error handling for creation of folders in the File Provider
- add support for class settings to disable local error handling for test purposes

* - bring up an alert if a new folder is attampted to be created in a location where another item with the same name already exists
- add support for providing a title to the namecheck/validation result in NamingViewController

* - OCMessage+Extension: convenience method to simplify presentation of OCMessages in the app
- move MessageSelector from ClientActivityViewController to ClientRootViewController for joint access from different parts of the app
- MessageSelector: add option to also collect and update a Set of OCSyncRecordIDs found in active messages
- ClientActivityCell + ClientActivityViewController: add support to show tappable warning sign instead of progress indicator if a message for the activity's sync record ID has been found
- ClientItemCell + FileListTableViewcontroller/ClientQueryViewController: add support to show tappable warning sign instead of progress indicator or more button if a message for the item's active sync record IDs has been found

* - Remove unused code from SDk

* - display "All done" message in Status tab when there are no messages or activities going on

* - Fix review findings

* - more nuanced status message in case of pending issues

* - Adding key command support to AlertViewController

* - remove duplicate/reunify diverged code in "ownCloudAppShared/SDK Extensions/OCItem+Extension.swift" and "ownCloud/SDK Extensions/OCItem+Extension.swift"
	- move app-specific code to OCItem+AppExtension.swift
	- update ownCloudAppShared/SDK Extensions/OCItem+Extension.swift with all changes
- optimize speed of:
	- OCItem+Extension.isShareRootItem() by checking only the parent item and cache the result for the duration of the runloop iteration
	- OCItem+Extension.shareRootItem(from:) by wrapping all SQLite lookups into a single transaction, avoiding unnecessary idle/wait time

* - Update SDK to add Cancel option for uploads

* - Add initial call to (re)set app icon count in case the app got deleted with messages but kept the count upon reinstall

* - Address finding (5) in #662 via SDK update ("ugly" authentication error message)

* - Extensions / Categories:
	- move OCBookmark.userName, .displayName and .shortName to ownCloudApp.framework so it becomes available to the NotificationMessagePresenter
- NotificationManager:
	- extend NotificationManager to provide equivalents for relevant methods of UNUserNotificationCenter
	- change all usages of UNUserNotificationCenter to NotificationManager
- NotificationMessagePresenter:
	- add account information to notifications
	- only add account information if the user has more than one account in the app
- Update SDK

* - Update SDK to address (6)

* - fix finding (6) glitch where message/warning icons wouldn't disappear when resuming a download or upload

* - Update SDK

* - Update SDK

Co-authored-by: Matthias Hühne <github@hosy.de>
Co-authored-by: Michael Neuwert <mn@neuwert-media.com>
Co-authored-by: Matthias Hühne <mhuehne@owncloud.com>

* - Update SDK to develop (now containing all changes from feature/message-queue)

* - Fix static analyzer warnings

* - Update SDK to fix owncloud/enterprise#4053 and owncloud/ios-app#732

* - Update SDK

* [feature/branding] Branding / Static Login support (#637)

* - New Static Login
	- StaticLoginBundle: container for all Static Login parameters
	- StaticLoginProfile: individual parameters for a Static Login
	- StaticLoginViewController: WIP implementation for a Static Login UI
- Theme extensions
	- UIButton support
	- ThemeStyleIdentifier typealias for more expressive APIs
- Static Table View
	- added support for headerView and footerView of section

* - Add closeHandler-support to ClientRootViewController to run a block when a connection is closed by the user
- Fix crash in OCItem+Extension.lastModifiedInReadableFormat by adding a missing check
- Make sure ProgressHUDViewController.dismiss() always calls the completion block
- ServerListTableViewController enhancements:
    - hasToolbar-property to turn the toolbar on/off
    - make initialization with XIB optional
    - add showModal(), didUpdateServerList() and openBookmark() hooks for subclasses
- Add StaticLoginServerListViewController (ServerListTableViewController subclass)
- Add "Done" button to SettingsViewController if it is used as the rootViewController
- Add loginThemeStyleID to StaticLoginBundle
- Make StaticLoginSetupViewController feature-complete
- Add new ThemeView that can be used as container for ThemeAppliers that get removed automatically when the view is freed
- Relocate FullWidthHeaderView and make it a ThemeView subview
- Extend StaticTableViewSection.addButtonFooter() to support cancel-only versions
- Add toolbar to StaticLoginViewController
- Fix copyright notice formatting

* New Iconset for iOS: Filetype Icons

* Documentation for the app color scheme

* markdown definition for color theme values

* added links to type definitons

* added color definition

* added global colors

* added color values for dark scheme

* added light and classic color scheme

* Preparing branding support with themes and colors from plist file

* - using theme styles from plist file
- using splash image in welcome view

* set tint color for server list icon

* Add example images

* Change the color of the bookmark-logo

* Change colors to match example-theme

* use different icons

* All colors are not customizable by setting the color in Theme.plist. If the key is not set in plist, the default value will be used.

* fixed resolving theme color pair

* Added appiconset and changes branding colors

* Color adjustments and edited bookmark-logo

* Add Surf logos and colors

* setting new theme generic colors and reading them from keypath, if existing

* Add Surf logos and colors

* Add first SURF branding

* removed iOS 13 code

* Merge branch 'master' into Design

* fixed broken project file

* fixed broken plist file after merge

* Cleanup after cherry-pick from Design branch

* Add colors from SURF

* Add changes to Fastfile from tag 1.1.0

* Comment out Themes tests

* removed bookmark icon tint color

* Add new bookmark-icon.png

* Change the name to SURFdrive

* changed app name in build settings instead of target name

* customize search bar

* Add new bookmark icon and polish color settings

* Add new bookmark icon and polish color settings

* Change the name to SURFdrive, again

* - searchbar customization
- theming delete button in pass code view

* - Fix Swift and SwiftLint warnings
- Remove unused UploadsSettingsSection (was replaced by MediaUploadSettings)

* - adopted Fastfile to set the app name
- added app name to Themes.plist
- removed unneeded theme

* set correct path in Fastfile

* removed output name, because Bitrise expects other ipa name

* using branded image for quick access tab

* setting the placeholder color for UISearchBar text field in iOS 13

* check if app is branded, disable help and feedback, if branded app

* - support for branded urls (help, privacy)
- changed plist name

* hide Theme settings for branded apps

* using correct branding file name

* added tint color for alert view labels

* Branded App Name fixes

* Using correct app name, if branded

* Change spp name in extension targets for branded apps

* - using newest SDK for custom User-Agent
- setting CFBundleName by fastlane
- fixed badge text bug, caused by pango version
- updated Gems

* Added a vendor setting, if an account can be added, in UI (can b

* - changed AppName to use organizationNamer of Bundle in Branding.plist
- added maxBookmarkCount
- cleanup
- bug fixing

* - only show Feedback only for unbranded clients
- Fastlane: use new plist value from bundle dictionary as appName
- use correct logo image, without tint color
- set custom logo in Branding.plist

* added feedback mail

* adding a Done button to the settings view, if the Settings-View was presented modally

* Add image for the branded login

* - PushTransition:
	- allow customization of the recovery at the transition end with a new PushTransitionRecovery block option
- PushTransitionDelegate:
	- support handing through a PushTransitionRecovery block to PushTransition
- ServerListTableViewController:
	- replace all remaining present() calls with showModal() calls
	- add .pushFromViewController property to customize presentation with PushTransition
- StaticLoginServerListViewController:
	 - override showModal() to change the modalPresentationStyle of presented view controllers from .fullScreen to .overFullScreen
- StaticLoginViewController:
	- fix transition of .contentViewController if the same value is set again
	- add example of how the PushTransitionRecovery block could be used to fix the issue of disappearing views after transition (was an intermediate solution, preserved for the case it's needed again in the future)

* Updated with branding changes for better branding support and using the ownCloud.online theme

* fixed merge problems with new version

* - fixed title color in release notes
- fixed header/footer height, if nil (seen in release notes view controller)

* changed online creation of badge file for icon creation to local creation

* added own fastlane action to read APP_SHORT_VERSION and APP_VERSION from Xcode project file and set it as badge icon values

* changed variable names to match values

* removed build number, because of missing space

* - added missing localization strings
- fixed problem, when footer or header view was not nil
- fixed theme for activity view

* - fixed login problem on iOS 12
- fixed crash on logout
(both SingleAccount)

* change the folder color

* - remove duplicated files, accidentally moved new line
- update to latest/develop SDK version

* - remove unused LibraryFilesTableViewController.swift
- re-add missing empty line to UploadMediaAction.swift

* - Remove duplicate file ownCloudAppFramework/Info.plist

* - Remove unused file

* - remove redundant code, fix header comments

* - remove code that'll be never executed in StaticLoginViewController
- fixed force-cast warning in StaticLoginBundle
- switched ThemeProvider to use URLs rather than file base name
- ThemeStyle.registerDefaultStyles() registers default styles if no brandingURL can be determined
- removed repeated code from VendorServices and bundled it up in .brandingURL, .brandingURLFor(name:) and .brandingProperties
- removed duplicate entry for/duplicate compilation of UIView+Extension.swift

* - Fix merge errors in project file

* - Fix file headers
- Small simplification / code de-duplication

* - Use enums instead of plain numbers for sections and rows

* - make sure Branding.plist/Profiles/[n]/allowedAuthenticationMethods is honored
- add error message when no allowed authentication method is available from the server

* - Solved code review findings
- Added missing styles key in Branding.plist
- Using styles from Branding.plist for theming

* - ServerListTableViewController: make UIActivityIndicatorView indicating the app is connecting use the correct style so it has better visibility
- StaticLoginProfile, StaticLoginBundle and StaticLoginSetupViewController: added support for .promptForPasswordAuth and .promptForTokenAuth (with .prompt fallback)

* fixed QA findings:
- do not show cancel button, if canAddAccount is enabled and no account was configured
- set a working demo url
- use feedbackMail, when configured
- removed logo and background name from branding.plist, these values are not configurable
- moved organization name entry one level higher
- removed app name key
- removed translucence from toolbar

* Fixed QA finding:
Connecting to insecure http connection or after presenting a connection issue is now working

* moved branded images, changed names

* removed unneeded code and values

* fixed QA finding 11 crash, when Help and Privacy values was not provided

* fixed QA finding 14:
- do not show Cancel button, if no account was added
- show Welcome title instead of profile name for token based authentication

* fixed QA finding 17:
- show an alert message, when no profile URL was provided, instead of crashing
- fixed localization

* fixed QA finding 16, 3:
- using ServerListBookmarkCell for showing account infos in list with more informations
- moved "Add Account" to toolbar button

* fixed QA finding 9:
- fixed crash on delete account
- show welcome screen, when all accounts was deleted

* fixed QA finding 10:
always show toolbar, to have permanent access to app settings

* fixed QA finding 13, skip profile selection, when only one profile is available

* fixed QA finding 21, removed duplicated "Settings" in single account view

* added documentation for theme color values

* fixed reading and setting statusBar values from Branding.plist

* isBranded is only true, if Profiles was defined in Branding.plist. The file Branding.plist will be kept, even when the build is the regular iOS app build.

* - fixed findings, when app was not build as branded app to match the colors and icons like in the existing regular iOS app
- updated to correct images
- renamed image files

Co-authored-by: Felix Schwarz <felix.schwarz@iospirit.com>
Co-authored-by: wuenschedesign <40062503+wuenschedesign@users.noreply.github.com>
Co-authored-by: Christian Scherm <cscherm@owncloud.com>
Co-authored-by: Felix Schwarz <fs-git@iospirit.com>

* - Update SDK to provide additional improvements to the fix for owncloud/ios-app#732 and owncloud/enterprise#4053

* fixed localization string

* fixed fastlane getting custom app name

* fixed branding the color of the text field cursor

* new app version for TestFlight build

* first release notes draft for version 11.4

* Fix for NSOperationQueue issue in iOS13.6

Media upload got broken on iOS13.6, since NSOperationQueue has spawned too many export / upload operations simultaneously leading to thread starvation.

* Added PLCrashReporter to log crashes (#738)

* Integrated PLCrashReporter

* Modified text file mentioning licenses of 3rd party components

* Moved import statement to the top

Co-authored-by: Michael Neuwert <mn@neuwert-media.com>

* added rounded corners to server list in branding UI

* enabled beta build and warning

* renamed and moved brandable image files

* added image to app target

* fixed crash when deleting a bookmark

* Add PLCrashReported to FileProvider extension (#765)

* Integrated PLCrashReporter

* Modified text file mentioning licenses of 3rd party components

* Moved import statement to the top

* Fixed indentation issues

* Added crash reporting to file provider

* Changed a way PLCrashReporter is initialized

Initialize it as soon as FileProvider extension is loaded into memory

* Moved crash reporter initialization to -[FileProviderExtension init]

* - Add "CRASH_REPORTER" tag to File Provider crash report logging

* Made sure crash reporter is initialized once

Co-authored-by: Michael Neuwert <mn@neuwert-media.com>
Co-authored-by: Felix Schwarz <fs-git@iospirit.com>

* #747 added missing UTI conversion for MindNode and iThoughts file extensions. Furthermore there is a fallback for pdf extension, because we have a tester who reported that PDF files are greyed out in FileProvidfer (#754)

* #745 before this fix, not only available offline files were shown, all locally available files was shown (#768)

* - added missing release notes infos for release 11.4
- changed storing and reading base64 encoded images for iOS 12

* - added "Share Sheet" to release notes
- fixed some wording

* [feature/selection-counter-label] File List: Selected items counter label (#771)

* New label to show how many items are selected in the file list

* removed the "Select items" title, if no item is selected, because it can confuse the user

* clear label, if no item is selected

* - moved number of selected items to navigation title
- addressed #613: showing number of folder items in footer label

* - update title when selection did end
- empty title view before, when setting the title

* fixed localization

* - fixed empty item list label
- fixed single item label

* using short strings for better readability

* [feature/migration] Migration from the app with same Bundle ID (#660)

* First version of account migration

- Only basic auth supported
- No UI
- No settings are migrated
- Legacy data not yet deleted

* Some minor changes

* Migration with the same bundle ID implemented

- Still the UI is just a draft
- OAuth2 token refresh isn’t really working and requires complete re-authentication

* Updated fastlane file to create dynamic builds, which means you can pass in bundle ids, keychain group and provisioning profile for the generated file. Now it is possible to build an owncloud.online iOS app beside the enterprise app.
Also updated to the new version number 11.4.

* Fixed some swift lint warnings

* Adjusted expiration date handling

* Fixed an issue with OAuth2 re-authentication if no valid auth data was found

* Forgot to comment in copying of auth data to bookmark

* Showing succes in iOS13 and higher

* Minor changes

- Adapted to latest master oC SDK
- Changed appearance of checkmarks in the migration view

* - Resolve TODO / remove duplicated OCItemTracker code

* - Update SDK to include additional auth data update logging
- remove unneeded calls to OCBookmarkManager.saveBookmarks()
- fix Migration.legacyDataFound getter warning

* - Update SDK

* Added more logs to migration mechanism

* - Update SDK

* Invalidating oauth token upon migration

This should trigger a re-fresh since in the legacy app we didn’t store expiration date. Worst case user will have to re-login.

* Added icons for iOS releases prior to 13.x

- Exported some SF Symbols to PDF
- Displaying migration step success or failure with an icon

* Added icons for different migration activity types

* Some UI refinements

- Tweaked layou size and color of some elements in MigrationActivityCell
- Localized relevant strings
- Fixed swift lint warnings

* Fixed year in the licensing comment: 2019 vs 2020

* Presenting an error  on failed database opening attempt

If during migration legacy app’s database can’t be opened, error will be presented to the user

* Fixed a review finding

When retrieving credentials from the keychain stored by the legacy app, error is returned by ‘SecItemCopyMatching’, in the migration UI the account migration will be shown as failed instead of potentially showing nothing.

* Added a UI to approve / reject connection issues

* Skipping invalid user records

Found a case in which legacy app has stored multiple rows for the same user ID

* Fixed: displayUserName vs userName

* Changed presentation style of migration view controller

To avoid accidental dismissal before the migration is finished

* Added biometrical identification setting migration

Touch ID, Face ID depending on the hardware support

* SDK update

* Fixed merge issues

* Test commit with debug logs enabled

* Added more logs and fixed small issues

* Fixed an issue with InstantUpload settings hanging

There was an issue with InstantUpload folder creation leading to DispatchGroup.leave() not being called and thus hanging in wait() forever.

Co-authored-by: Michael Neuwert <mn@neuwert-media.com>
Co-authored-by: Matthias Hühne <github@hosy.de>
Co-authored-by: Felix Schwarz <fs-git@iospirit.com>

* [feature/extended-share-sheet-reorg] Share Sheet Extension (re-organized) (#752)

* - remove UIApplication.shared dependency
	- new UserInterfaceContext class, providing access to what UIApplication (and extensions thereof) were previously accessed
	- apps and extensions can implement an UserInterfaceContext extension implementing the UserInterfaceContextProvider protocol to provide access to supported UI elements
	- allowed removal of UIApplication+Extension
- moving major parts from ownCloud to ownCloudAppShared (major refactoring)
	- declare relevant methods and properties open or public
	- adapt all relevant XIBs
- cleanups
	- move "feedback" settings from MoreSettingsSection to VendorServices ("app") and update CONFIGURATION.md accordingly
	- move all intents from ownCloudAppShared to the intents app extension
	- merge AppLockHelper method into AppLockManager as a class-level property (AppLockManager.isPassCodeEnabled)
	- make UIDevice.current.isIpad a property (rather than a method)
	- fix indentations in many areas

* - moving Action base class to ownCloudAppShared
- moving FileListTableViewController to ownCloudAppShared, decouple big dependencies like the more view and open item handling so it can remain in the app itself

* - fix AppIcon-emm icon set
- QueryListTableViewController:
	- factor out multi selection
	- move to ownCloudAppShared
- adapt and move rest of app and framework code where needed

* - factor out inline message support for ClientQueryViewController
- move ClientQueryViewController to ownCloudAppShared
- move ClientDirectoryPickerViewController to ownCloudAppShared

* - move NamingViewController and CreateFolderAction to ownCloudAppShared
- move TVG resources to ownCloudAppShared
- start integration of feature/extended-share-sheet additions

Co-authored-by: Matthias Hühne <github@hosy.de>

* - transfer Fastfile changes from feature/extended-share-sheet
- transfer ImportFilesController removal from feature/extended-share-sheet
- transfer Localizable.strings changes from feature/extended-share-sheet

Co-authored-by: Matthias Hühne <github@hosy.de>

* - move NamingViewController and CreateFolderAction to ownCloudAppShared
- move TVG resources to ownCloudAppShared

* - remove unnecessary type dependencies in UserInterfaceContext
- new AppExtensionNavigationController to simplify Theme support and automated theme switching in App Extensions
- refactor ShareNavigationController as a AppExtensionNavigationController subclass

* - fix issue where OCCore is returned prematurely and multiple times

* - fix format error in ar localization
- add Localizable.strings to ownCloudAppShared, but also prepare for breaking out the relevant strings via .slocalized method
- optimize access to the ownCloudAppShared bundle

* Share Sheet Review:
- rename DisplayName from "ownCloud Share Extension" to "Share to ownCloud"
- change account selection wording to not include a reference to "file" (due to singular, plural).
- ClientDirectoryPickerViewController + AppLockManager
	- remove ShareViewController-specific code and instead add a new cancelAction property that takes a block to execute if the Cancel button is pressed
- ShareViewController
	- add NSErrorDomain.ShareViewErrorDomain instead of direct string use
	- remove ownCloud logo from account list (-> not brandable)
	- adapt code to use .cancelAction properties in ClientDirectoryPickerViewController + AppLockManager
	- update code to only use weak references to OCCore (previously kept a zombie instance around, causing issues)
	- use a DispatchGroup instead of the attachment index to track when import has finished
	- only signal request completion to the extensionContext once the OCCore has finished controlled shut down
	- fix error message in importFile if a nil value is returned for import progress

* - Update SDK

* - Updated to Xcode 11.6

* - fixed server list bookmark icon
- set the display name of the extension to the title
- set the display name in fastlane script for building a branded app
- fixed delete button colors in passcode viewcontroller

* fixed x-alignment for the progress view

* - Update SDK to solve false negative certificate validation

* Changed deployment target to 12.0, same as app target. Needed, that the share extension appears in the share sheet.

* - fixed presenting sort bar on iOS 12
- only add section, when no account or more than one account is configured

* - FileProvider Extension
	- added new special item path and id to retrieve a special, internal service
	- add support for providing service sources
- FileProviderServiceSource
	- provides XPC service for accessing / controlling the File Provider from a different process
	- supported methods are placed in the OCFileProviderServicesHost protocol
- ownCloudApp.framework
	- extensions for OCBookmark and OCVault to dynamically compose name and URL of the internal File Provider service
	- OCCore extension to connect to the File Provider, make calls and close the connection with only a few lines of code
- ownCloudAppShared.framework
	- AppExtensionNavigationController: add support to run a block when the navigation control is disappearing (typically indicating dismissal of the extension)
- ShareViewController
	- change importFile() to send files to the File Provider for upload
	- keeps track of requested OCCores and properly returns them to OCCoreManager
	- simplify presentation of directory picker if there's only one account

* reorganized UI, especially for iOS 12, but also cleaner usage of ClientDirectoryViewController implementation
- solved iOS 12 UI problems

* fixed: push transition delegate was not called, because of wrong permissions

* fixed file provider access in share sheet importFile function

* changes from milestone/1.4 branch

* new build number

* fixed code signing issues for share extension

* fixed release profile for share extension

* bring back the ImportFilesController, which is needed for Inter-App files import

* fixed importing files with original file name

* support for multiple file import in ShareViewController, which is needed for receiving files via AirDrop

* - ImportFilesController:
	- use a DispatchGroup to return the requested OCCore only after all uploads have been scheduled
	- code simplification for better readability
- ShareViewController:
	- dismiss view controller before returning core, to avoid dangling strong references from KVO of Core in ClientQueryViewController
	- factor out code for upload via File Provider
- OCCore+FPServices: provide dedicated error handler parameter for handling XPC connection errors
- ClientDirectoryPickerViewController: remove direct usage of extensionContext (duplicate effort, too specific)
- ClientQueryViewController: make it clearer that `core` should only be weakly held by quotaObservation
- OCCore+UploadByFileProvider:
	- factored out code for upload via File Provider
	- automatic management of temporary copies (creating them automatically if needed)
- SDK update

* - changes in document types
- hardcoded file provider display name

* save plain text as RTF file

* Saving shared plain-text as txt file

* if item is an url, the content will be downloaded and saved

* fixed crash when deleting a bookmark

* - OCFileProviderServiceSession: dedicated class to access FP services
	- queues work to avoid parallel access to the same remote OCCore
	- automatic XPC connection management to avoid concurrent connections and save time for bringing up and down a new XPC connection for every request
	- can be used without an OCCore on the client side
- refactor OCCore+FPServices to use OCFileProviderServiceSession under the hood

* - Add localizable strings
- file import via File Provider: refactor to remove dependency on OCCore
- OCFileProviderServiceSession
	- allow direct usage via simplified APIs
	- add incrementSessionUsage/decrementSessionUsage to keep the session alive beyond the last action
- ShareViewController:
	- add error handling
	- serialize uploads for meaningful ability to cancel and lower resource usage
- FullProgressViewController: new view controller to display progress information modally, while providing a Cancel option
- project: add relevant frameworks to share sheet target to avoid linker error at runtime

Co-authored-by: Matthias Hühne <github@hosy.de>

* Reverted streaming enabled setting (#769)

Co-authored-by: Michael Neuwert <mn@neuwert-media.com>
Co-authored-by: Matthias Hühne <github@hosy.de>

* - new build number
- show release notes for a new build number, instead of a new version number
- fixed release notes wording

* updated emm app icon

* added missing release note for item counter

* update fastlane file with share extension bundle ids and provisioning profiles

* fixed overlapping tab bar over table view

* [feature/diagnostic] Diagnostic information (#762)

* - VendorServices: re-enable beta build
- ClientActivityViewController: add swipe action to show diagnostic information on a sync entry
- DiagnosticViewController: display diagnostic information as native table, provide option…
…d adopt OCClassSettingsUserPreferencesSupport to tie in user prefs

- BookmarkViewController and StaticLoginSetupViewController: add support for new SDK-side Host Simulator Manager
- show number of messages after "Show All" in activity tab
- App Store receipt parsing: add support for longer/incompatible timestamp format and add unit test for the different date format flavors
- update SDK
…gin view (#807)

* [feature/drag-drop-setting] Setting to disable dragging files inside the app (#643)

* #581 Added new setting to disable dragging files inside the app

* addressed CR findings and changed the title and the default value

* changed variable name for prevent dragging files and folders

* - update SDK
	- adapt BookmarkViewController to latest OCBookmarkManager usage patterns
- improve Illustrator ".ai" support
	- override for failing iOS MIMEType -> UTI conversion in FileProvider (-> fix grayed out items in Files app)
	- add "application/illustrator" mime type to PDFViewerViewController to allow viewing Illustrator files in-app
- improved sorting
	- replace "type" with "kind" to match Files app and change method:
		- sort by type (folder / file)
		- if identical: sort by suffix (with fallback to MIMEType if no suffix is available)
		- if identical: use "_various" for comparison

* Using creationDate instead of modificationDate (#668)

Change shall avoid upload of duplicated photos since e.g. modificationDate can change if the photo was edited.

Co-authored-by: Michael Neuwert <mn@neuwert-media.com>
Co-authored-by: Matthias Hühne <mhuehne@owncloud.com>

* Update documentation to reflect changes in instant photo upload (#677)

* Document task scheduling

This relates to https://github.com/owncloud/ios-app/pull/484 and
https://github.com/owncloud/docs/issues/1900.Document task scheduling

This relates to https://github.com/owncloud/ios-app/pull/484 and
https://github.com/owncloud/docs/issues/1900.

* Document task scheduling

This relates to https://github.com/owncloud/ios-app/pull/484 and
https://github.com/owncloud/docs/issues/1900.Document task scheduling

This relates to https://github.com/owncloud/ios-app/pull/484 and
https://github.com/owncloud/docs/issues/1900.

* Update docs/modules/ROOT/pages/ios_task_scheduling.adoc

Co-Authored-By: Phil Davis <phil@jankaritech.com>

* Update docs/modules/ROOT/pages/ios_task_scheduling.adoc

Co-Authored-By: Phil Davis <phil@jankaritech.com>

* Changed documentation to reflect changes in instant photo upload

Co-authored-by: Matthew Setter <matthew@matthewsetter.com>
Co-authored-by: Matthew Setter <settermjd@users.noreply.github.com>
Co-authored-by: Matthew Setter <matthew.setter@gmail.com>
Co-authored-by: Phil Davis <phil@jankaritech.com>
Co-authored-by: Michael Neuwert <mn@neuwert-media.com>

* [feature/improve-public-link-creation] Improve creation of public link (#673)

* #671 Improve creation of public link
- enable dragging public link
- added clear button on public link name
- copy link to clipboard, after link was created

* - added in-app notifications to the app
- show a notification if a public or private link was copied to the clipboard

* implemented own notification banner class to show in-app notifications without a need of local notification permissions

* resolved crash

* - implemented own animator class
- renamed class
- added completion handler on dismissal
- added shadow

* [fix/audio-stop-playing] Stop playing Audio when item loosing focus (#686)

* #683 fix stop playing audio, when scrollview was swiped to next item, play again, when come back to the audio item

* moved code to given delegate methods

* [fix/round-shape-button] Fix round shape for pin code buttons (#689)

* #654 bring back the round shape to the button, after changes in super class

* added a new enum type to set corner radius with enum values

* [feature/folders-first] Option to show folders at the top (#680)

* - add "Show folders at the top" option in Settings
- fix DisplaySettings change propagation within the same process (relevant when using multiple scenes on iPadOS)
- restructure SortMethod and add support to show folders at the top for all sort methods

* - Update CONFIGURATION.md to include new and previously undocumented configuration options

* [feature/resign-script] Resign Script  (#690)

* Resign script with instructions how to resign an IPA file with an other certificate and provisioning profiles

* Using correct markdown format

* changed formatting for better readability

* Updated readme file

* changed new lines

* changed formatting

* changed formatting

* changed wording

* - changed folder structure
- added a parameter check for the signing method

* - show available certificate identities in usage
- check provisioning profiles fingerprint if matches with signing identity fingerprint

* [iOS] Open private link in app (#609)

* Adapted to latest SDK changes in develop branch

* Implemented support for private links

- Support for opening links using custom URL scheme owncloud://
- Support for associated domains added
- Test associated domain configured

* Some small fix for presenting linked item

* Fixed an issue with universal links not being opened if the app was terminated in iOS13

* Triggering item download if necessary when core connection status changes to online

* Added a comment requested in code review

* Fixed build issues

* Iterating through multiple bookmarks possibly related to same URL

* Fixed review finding

* Fixed various swift Lint findings

* Fixed minor swift lint warnings

* - Licensing: add finishTransaction call for SKPaymentTransactionStateRestored transactions

* Fixes an issue with private link not being opened

This would happen in case user has kept opened a card with actions (via 3 dots button)

* Removed dead code and ensured that no item is opened at next launch if user returns to server list

* Handling going back in state restoration

* Added error message in case link can’t be resolved

* Swiflit trailing space warnings fixed

* - Update SDK to resolve issues

* Made download dependant on state of the connection

More reliable download mechanism for file previews:
- Trigger download only if network connectivity is available
- React to connection state changes

* Fixed an issue with owncloud:// schemed links not opened

* Trying to trigger download when network becomes available

* Fixed swift lint warning

* Avoiding multiple update of display view state

* Updated to the latest SDK

* Fixed an issue with DispatchGroup.leave() sometimes not being called

* Adapted for a new connection status .connecting

* Some swift lint warnings fixed

* Some refactoring in the DisplayViewController

* Tried to make DisplayViewController more maintenance friendly

- Code restructuring
- Handling of connection status
- Re-worked view state handling
- Tried to unwind some deeply nested hard to understand if conditions

* Included a fix in the SDK which brings back missing parent OCItems

* Showing “Connecting…” before OCCore switches connection status to online

* Several small changes

* Improved private link handling

- Refactored to avoid unnecessary code duplication
- Improved error messages
- Showing progress HUD while link is being resolved since it might take time espeially with multiple configured bookmarks and so on

* Updated to the develop/latest SDK revision

* Changed how error message is chosen if the item for private link is not found

* Using OCCoreConnectionStatusSignal instead of OCCore.connectionStatus

* Fixed “Connecting…” visual glitch and added spinner shown while connecting

* Fixed opening of app registered scheme on iOS13

As well as eventually a bug concerning file imports in case the app was not launched

* Added a delay for iOS 12.x for the private link resolution

So when the root view controller is instantiated it might already start some operations like opening a root of bookmark etc. Otherwise it would probably require some complex coordination managed centrally. On iOS 13 such hack would be unnecessary since there UIApplicationDelegate callbacks are not used anymore.

* Improvement for QA finding

If the bookmark to which private link has pointed is not configured,  wrong error message has been shown

* Fixed an issue with incorrect error message being shown

In case item was removed

* Fixed an issue with file previews

- Not downloading by default if file can’t be previewed
- Downloading and opening files which can be previewed by QLPreviewController

* Fixed an issue with renderSpecificView() called at inapropriate time

Co-authored-by: Michael Neuwert <mn@neuwert-media.com>
Co-authored-by: Felix Schwarz <fs-git@iospirit.com>

* new version and build number

* - Update SDK to add latest SDK HTTP request/response logging improvements

* Fixed some issues with VoiceOver / accessibility labels (#701)

* Set accessibility properties on the actions menu drag handle

* Fixed accessibility label for the favorite / unfavorite button

* Fixed wrong order of accesibility labels for star button (favorite)

* Added accesibility label for button activating multiple item selection

* Added proper accessibility labels to the toolbar items

* added mouse pointer hover effect to drag view

Co-authored-by: Michael Neuwert <mn@neuwert-media.com>
Co-authored-by: Matthias Hühne <github@hosy.de>
Co-authored-by: Matthias Hühne <mhuehne@owncloud.com>

* - Update SDK to add preliminary/experimental TUS support

* show view controllers as formSheet, because fullscreen is to large for this small view on the iPad

* Take Photo or Video and Upload (#707)

* First draft of take photo and upload feature

* Don’t allow image editing when taking new pic

* Next iteration of “Take photo or video”

- Preserving image meta-data
- Conversion HEIC -> JPEG depending on media upload settings
- Conversion MOV -> MP4
- Localized action name

* Fixed media naming and added some error logs

* Some cosmetic code changes

* Changed keyboard shortcut to Cmd+Shift+3

* Added logs to camera upload action

* Added progress hud in case photo / video export would take longer

* Added more logs

* Added a check for HEIC support

Warning added to the log in case HEIC is not supported

Co-authored-by: Michael Neuwert <mn@neuwert-media.com>
Co-authored-by: Matthias Hühne <mhuehne@owncloud.com>

* - update SDK to include JSON logging options
- add Xcode scheme env var templates to simplify testing

* [feature/contextual-menu] Contextual Menu for File List Items (#718)

* Correct some typos (#620)

Fix small errors in typos

Co-authored-by: Matthias Hühne <mhuehne@owncloud.com>

* add extra check in release checklist, to avoid missing translations in some languages (#640)

Co-authored-by: Matthias Hühne <mhuehne@owncloud.com>

* Fix docs build errors (#666)

Co-authored-by: Matthias Hühne <mhuehne@owncloud.com>

* #717 Implemented a contextual menu for the file list which includes the same items as the more menu card

* - UIMenu title removed
- use table row label color as image tint color (UIMenu background color is wrong in simulator and dark mode)

* solved tint color problems for UIAction icon

* fixed wording and localization

Co-authored-by: Carlos Damken <carlos@damken.com>
Co-authored-by: Jesús Recio <jrecio@solidgear.es>
Co-authored-by: Matthew Setter <matthew.setter@gmail.com>

* Fix for the resign script (#721)

- Do not embed entitlements into library binaries when signing frameworks. Otherwise leading to validation issue with AppStore Connect.
- Set NSExtensionFileProviderDocumentGroup to appropriate app group. This was missing

Co-authored-by: Michael Neuwert <mn@neuwert-media.com>

* Another fix for resigning script

Delete tmp.plist after it is no longer being used, otherwise leads to ITMS-90048 Bundle is invalid.

* Support changing the format of uploaded image file names (#687)

* Improved various aspects of media uploads

- Changed a way how assets are exported which photo uploads significantly faster
- Refactored PHAsset+Upload.swift extensions which is now way more readable.
- Improved naming of assets
- Changed default naming of uploaded assets to the scheme legacy app was using
- Added an option allowing to preserve “original” asset names as used by iOS photo library
- Prepared code for future enhancments (exporting additional assets like RAW images and live photo video clips

* Localization of strings and other tiny changes

* Made a mechanism deriving original media asset name more reliable

* Fixed requesting image data

* Using PHAsset.creationDate as lastModifiedDate when uploading media asset

The timestamp is then set into corresponding property in the WebDAV request allowing to have proper file creation date when uploaded to oC server instance.

* Picking edited version of the photo when uploading by default

* Moved files around to have a cleaner structure in Xcode

* Using PHAssetResourceManager for export whenever possible

* Fixed small issues

* Corrected some comments

* Fixes issue (1) found in QA testing

Fixed duplicated .MP4 extension when uploading videos

Co-authored-by: Michael Neuwert <mn@neuwert-media.com>
Co-authored-by: Felix Schwarz <fs-git@iospirit.com>

* Fixed 1.4 branch

* - update SDK to include tus creation-with-upload support
- add additional env parameters for logging, auth methods

* - update SDK to fix infinite loops when hitting a redirect or certificate issue, eliminating redundant issues, respecting and remembering choices to either retry or put the connection offline

* [fix/various] Various fixes (#713)

* - FileProvider: extend hardcoded MIME/Suffix -> UTI maps so files of these types are properly displayed in the Files app

* - add new ItemContainer protocol allowing the retrieval of an item from another object
- UIImageView+Thumbnails
	- fix item version comparison for thumbnails requested from the SDK (using ItemContainer)
	- add item version comparison for thumbnails generated locally via QLThumbnailGenerator (using ItemContainer)

* - Update SDK

* - sharing items will be shown as subsection in contextual menu
- only show sharing items, if sharing is enabled and core is online

* changed image for rename menu item to pencil on > iOS 13

* Fixes for markup and PDF viewer (#730)

* Activate editing mode in viewDidAppear()

Sort of a hack but there is apparently no other way of achieving this

* Display more button in the PDF viewer. Preserving already configured UIBarButtonItem instances when adding more button.

* Re-rendering content if it has got modified locally

E.g. user could open markup editor and scribble on picture or PDF. Without this fix, he would need to go back to the file list and re-open document to see the changes.

* Fix for auto-tapping markup button

Co-authored-by: Michael Neuwert <mn@neuwert-media.com>

* fixes malformed file

* fixed code signing:
- use entitlements from app binary instead of provisioning profile
- set app values from provisioning profile to entitlements file
- only set NSExtensionFileProviderDocumentGroup for File Provider extension

* Include new dialog to encourage users to add a new app review in App Store  (#728)

* Added all bits and pieces for app review request

* Fix for a review task not being run

* Changed the way review prompt is presented

* Fixed review findings

* Corrected sign of time interval properties

* Another sign for time interval corrected

* Corrected the way review is requested

Co-authored-by: Michael Neuwert <mn@neuwert-media.com>

* [feature/auth-migration] Authentication Method Migration (#682)

* - OCBookmark+Extension
	- clean up OCBookmarkUserInfoKeys and move them to their own extension
	- add new OCBookmark.scanForAuthenticationMethodsRequired to mark bookmarks as needing a scan for available auth methods before editing
- BookmarkViewController
	- add support for OCBookmark.scanForAuthenticationMethodsRequired
- ClientRootViewController
	- add scan for available authentication methods once when encountering an authorization error
	- rename "Ignore" to "Continue offline"
	- extend ClientRootViewControllerAuthenticationDelegate to include preferredAuthenticationMethods
	- prepare for inline authentication data (username + password - or -  tokens) gathering in the next step

* - Client: add support for handling auth failures inline, without dropping out of the connection:
	- ClientAuthenticationUpdater
		- offers high-level abstraction
		- ties together token-/web-based auth UI and password-based auth UI (ClientAuthenticationUpdaterViewController)
	- ClientAuthenticationUpdaterViewController
		- view controller specialized in requesting a password from the user

* - Update SDK

* - ClientRootViewController: add support for OCCoreConnectionStatus.connecting

* - Update SDK

* - ClientAuthenticationUpdater: add check for .preferredAuthenticationMethodIdentifiers to .canUpdateInline
- ClientRootViewController: add support for plain HTTP bookmarks to authentication method scan
- add additional logging

Co-authored-by: Matthias Hühne <github@hosy.de>

* iOS13 gesture based multiple selection (#734)

* iOS13 gesture based multiple selection

- In file list view (2 finger pan)
- In photo selection grid view (1 finger or 2 finger pan)

* Disable gesture based multi-selection if prevent dragging optin is active

* changed option title and added a subtitle with a short description

* using better wording

Co-authored-by: Michael Neuwert <mn@neuwert-media.com>
Co-authored-by: Matthias Hühne <github@hosy.de>

* [feature/emm] EMM version support (#706)

* Add EMM support:
- new OCLicenseEMMProvider
	- unlocks all pro features if the main bundle ID (as found in the app's or app extension's Info.plist) ends with either "-emm" or ".emm"
	- OCLicenseEMMProvider.isEMMVersion provides information on whether the app is an EMM version
- Licensing Setup: if the app is an EMM version, no App Store IAP provider is set up/added
- Settings: for EMM versions, don't show the "Pro Features" or "Purchases" entries

* - added new fastlane lane to build a emm version of the iOS app
- using the new fastlane file from migration bundle-id branch

* init fastlane deliver action to get the current metadata from the app store to prepare for different apps uploads (regular iOS app and EMM version)

* new fastlane action to parse the release notes plist file

* - new fastlane lane too upload regular and emm iOS build to the AppStore, before release note, screenshots can be created automatically
- new fastlane action to generate the release notes from the ReleaseNotes.plist
- added new options for fastlane lane

* show suffix "EMM" on settings, support mail, when the app was a EMM build

* - fixed signing issues
- changed copyright date
- removed app name metadata template, because of conflicts when using different apps
- updated release notes

* - added app icon for emm version
- exchange app icon with emm version before building
- added a description.txt metadata file for emm app version

* - added app icon for emm app (AppStore Connect upload)
- moving description and app icon for metadata upload
- uncomment code after testing

* new app icon for emm version

* fixed app icon dimensions

* using function from OCLicenseEMMProvider

* enable binary upload on deliver action for emm build

* using newest SDK, to prevent using UIWebView

* updated app version number

Co-authored-by: Matthias Hühne <github@hosy.de>

* Removed test configuration of associated domains

* Instant Uploads part II + more (#714)

* Improved various aspects of media uploads

- Changed a way how assets are exported which photo uploads significantly faster
- Refactored PHAsset+Upload.swift extensions which is now way more readable.
- Improved naming of assets
- Changed default naming of uploaded assets to the scheme legacy app was using
- Added an option allowing to preserve “original” asset names as used by iOS photo library
- Prepared code for future enhancments (exporting additional assets like RAW images and live photo video clips

* Localization of strings and other tiny changes

* Made a mechanism deriving original media asset name more reliable

* Fixed requesting image data

* Using PHAsset.creationDate as lastModifiedDate when uploading media asset

The timestamp is then set into corresponding property in the WebDAV request allowing to have proper file creation date when uploaded to oC server instance.

* Picking edited version of the photo when uploading by default

* Moved files around to have a cleaner structure in Xcode

* Using PHAssetResourceManager for export whenever possible

* Fixed small issues

* Corrected some comments

* Some small refactoring changes

* Add support for cellular transfer settings
- rename StorageSettingsSection to DataSettingsSection to extend scope
- add row and cellular transfer summary to DataSettingsSection
- add new CellularSettingsViewController to present and allow control over cellular settings

* - Update SDK with cellular switch improvements

* - Update SDK to adjust concurrency budgets for sync action so that wifi-only up-/downloads can't block cellular up-/downloads entirely

* Moved media upload settings into separate view

- New view for media upload settings
- Split settings into sections: Export, Auto Upload
- Changed appearance of the Upload Path setting
- Code refactoring changes

* Fixed swift lint warning

* Added cellular switch for media uploads

* Separate configuration for video auto-upload

Added posibility to select different account / path for video auto-uploads

* Fixed small issue in video upload

* Improved the UX for photo album view in upload

- Improved the way thumbnails are requested
- While view is active thumbnails for albums are cached
- Added activity indicator which is shown while albums are being fetched from photo library

* Uploading media from iCloud

- Showing cloud based photo albums in the selection UI
- Ability do upload media which is not available locally

* Improved vide exporting code

* Showing camera roll first in list of albums

* Refactored the method for asset fetching into separate extension

* Media upload queue refactoring

- More modular design and more maintainable code
- Started using OperationQueue for individual imports and created dedicated Operation subclass

* Forgot to add license header

* Small tweaks in media upload queue

- Changed import queue QoS to utility
- Added another cancellation point for MediaUploadOperation

* Configured main thread checker not to stop on first hit

* Background media uploads

- Improved and extended settings UI
- Using both BackgroundTasks and background location to enable background media uploads
- Local notifications informing about background uploads

* Fixed few issues concerning auto-upload settings

* Fixed some issues and added cellular switch for videos

- Some code refactoring in PHAsset export code
- Calling the upload completion handler when placeholder item is created allowing MediaUploadQueue to proceed

* Fixed an issue with photoLibraryChangeDetected flag reset at inappropriate time

* Improved wording in background upload settings

* Refactored local notifications in separate category

* Fixed swift lint warnings

* Cleaned up code

* Improved task scheduling code

* Re-added AVAsset extension

* Don’t show auto-upload settings if no accounts are configured

* Small improvements

- Wording for background location on iOS13 changed
- Added cell identifiers for easier creation of UI tests

* Fix of UI test was necessary since settings have moved

* Additional test for auto-upload settings added

* Fixed remaining failing UI tests

* Implemented CLLocationManagerDelegate error callback

* Re-applied a fix lost during merging

* Changed a way location tracking is initiated

- Start when app is going into background
- Stop when app is foreground
- Switch from significant location to visit monitoring

* Fixed review findings

* Removed a WiFi requirement from pending media upload task

* Removed some unused code

* Added more logs

* - add experimental option to force-enable background NSURLSession usage in the app
- in code, change all instances of the usage of the term "master" to "main"

* Removed an option allowing background NSURLSession

* Change the way background upload settings behave

* Removed background upload settings

Commented out and added a TODO

* Fixed some swift lint warnings

* Fixed review finding

* Only show bookmark / path if instant upload is enabled

Co-authored-by: Michael Neuwert <mn@neuwert-media.com>
Co-authored-by: Felix Schwarz <fs-git@iospirit.com>

* [feature/cellular-switch] Cellular transfer options (#709)

* Correct some typos (#620)

Fix small errors in typos

Co-authored-by: Matthias Hühne <mhuehne@owncloud.com>

* Add support for cellular transfer settings
- rename StorageSettingsSection to DataSettingsSection to extend scope
- add row and cellular transfer summary to DataSettingsSection
- add new CellularSettingsViewController to present and allow control over cellular settings

* - Update SDK with cellular switch improvements

* - Update SDK to adjust concurrency budgets for sync action so that wifi-only up-/downloads can't block cellular up-/downloads entirely

* - Update SDK with new prefixed-HTTP/single-line logging options
- Add new scheme options to selectively turn off single-line and prefixed HTTP logging

* - Update SDK to include logging improvements

* add extra check in release checklist, to avoid missing translations in some languages (#640)

Co-authored-by: Matthias Hühne <mhuehne@owncloud.com>

* - Update SDK

* - in code, change all instances of the usage of the term "master" to "main"
- update SDK

* - removal of iOS 11 support (including SFAuthenticationSession) and updating to iOS 12+ APIs, adaption of docs where needed
- migration from MobileCoreServices to CoreServices
- drop deprecated serialization APIs in AppLockManager and FileProvider
- Cellular Options
	- display a message if cellular transfers have been disabled via MDM
	- adopt updated SDK to include cellular option improvements

* - Update message in Cellular Settings and dynamically show/hide it depending on whether the main switch is enabled or not

Co-authored-by: Carlos Damken <carlos@damken.com>
Co-authored-by: Matthias Hühne <mhuehne@owncloud.com>
Co-authored-by: Jesús Recio <jrecio@solidgear.es>

* [feature/app-version-clipboard] App Version Infos to Clipboard (#741)

* #740 moved app version infos from footer to a row to perform a copy action to the clipboard with app version infos

* - fixed localization
- removed unneeded completion block

* removed target ownCloud File Provider UI, because this was never used
Deletion of this target solves a problem when building with fastlane (code signing error)

* [fix/missing-file-list-actions] Implements missing actions in Quick Access file list (#743)

* #733 some actions like contextual menu, multiple selection and swipe actions was missing in the generic file list class. Moved missing code to super class or super-super class.

* moved table view row swipe actions to parent class

* [feature/message-queue] Message Queue to allow flexible handling of issues and messages (#662)

* - ClientRootViewController: do not add dot to the end of the short connection status description if it already has one
- UIImageView+Thumbnails: fix retain loop, leading to leaking an OCCore - and all possible issues relating to that

* - Update to latest SDK

* - Update SDK and adapt ProgressSummarizer for new event type

* - Fix core-stop-blocking share reload query retain loop via SDK update

* - add permission checks to CreateFolderAction, DeleteAction, DocumentEditingAction, MoveAction, RenameAction, ScanAction and UploadBaseAction, so they are unavailable if permissions aren't sufficient for their usage
- add alert to inform the user that no actions are available in cases where no actions are available for a folder and the user presses the folder action "+" button

* - Update SDK

* fixed QA finding (1) #623

* Fix for QA issue (2)

Media upload settings shall not allow selection of the upload folder which lacks required Permissions

* #623 QA finding (6) allow Markup it at least one permission is available and restrict save actions to available permissions

* - address issue (1) using ActionContext.query.rootItem

* OCCore+Extension.swift:
- remove items from OCShareQueries where they are not used by the core to avoid warnings in the log
- add option for partial matches to sharesSharedWithMe() via allowPartialMatch option

PublicLinkTableViewController.swift:
- take advantage of allowPartialMatch option
- determine share nested the deepest to determine permissions (fixes finding 84) in #632

* - Update SDK

* - avoid using ":", "/" and "\" in localized time stamp of auto-created file names for document scanning, using "-" instead
- update SDK

* - DisplayViewController
	- make sure content is updated as new versions become available (fixing #630)
- FileProvider
	- make use of new SDK OCClaimLockTypeRead to encourage automatic file updates for opened files
- SDK update

* - Update SDK

* - Update SDK

* - DisplayViewController:
	- update for local changes, tracking the last modified date of the local file
	- source:didSet: remove duplicate/out-of-sync checks

* - EditDocumentViewController: fixing tabs, refresh when source file changes
- DisplayViewController: clarify code, add debug output
- OCItem+Extension: new OCItem.contentDifferent(than:core:) to determine whether the content of an item has likely changed based on two OCItem, based on identifiers and size, adapt OCItem.displaysDifferent(than:in:) to use the new method.

* - Change method to refresh QLPreviewController to .reloadData() as it works more reliable

* - Update SDK

* - Initial support for message queue

* - wrote down UI integration ideas

* - ownCloudApp framework
	- NotificationManager: provides necessary infrastructure for local notifications
	- NotificationMessagePresenter: an OCMessagePresenter using local notifications
- File Provider
	- temporarily drop all early-error-catching code to allow debugging messages
- Client
	- ClientActivityViewController: added support for display of OCMessages
	- ClientRootViewController:
		- added notificationPresenter and issueMessagePresenter
		- added presentAlertAsCard(viewController:withHandle:dismissable:) to present view controllers using the alertQueue
	- rewrite MessageCell to use the new AlertView instead
- Messages
	- AlertView and AlertViewController provide alert views suitable for showing as a card or inline in a table
	- CardIssueMessagePresenter: an OCMessagePresenter presenting messages as a card
	- SyncIssueMessagePresenter: an OCMessagePresenter bridging messages to the legacy OCIssue interface
- ServerListTableViewController: provide option for auto resolution using a particular error
- Fixes
	- MediaUploadQueue: fix deadlock and make sure the tracking doesn't stop prematurely (also resulting in a deadlock)
	- ProgressSummarizer: fix dangling pointer warning

* - Update SDK to incorporate ocis OIDC change

* Various fixes:
- SwiftLint: add implicit_getter to disabled_rules as it is broken and produces false positive warnings
- MediaUploadQueue: fix deadlock and avoid premature end of tracking (resulting in a hung/dysfunctional app)
- ProgressSummarizer: fix warning
- FileProviderExtension: adopt new lock type API

* - Update SDK to include OCAuthenticationMethodOpenIDConnect changes for ocis

* - WebViewDisplayViewController: add support for content updates, clean up code
- PreviewViewController: add support for content updates, clean up code

* - ImageDisplayViewController: add support for image file updates
- MediaDisplayViewController: fix indentation
- PDFViewerViewController: add support for file updates, fix indentation

* - CardIssueMessagePresenter: option to only show one message at once

* - Update SDK for latest improvements

* - AppDelegate: register notification categories at launch
- ClientRootViewController: add and remove presenters at core start/stop
- RoundedLabel: clean up and add styling support via Style struct and switch all usages of RoundedLabel over to new syntax
- ServerListTableViewController
	- track message count on a per-bookmark basis
	- update app icon badge count
	- broadcast change notifications
- ServerListBookmarkCell: add message count badge
- DisplayHostViewController & QueryFileListTableViewController: stop observation of OCQuery.state before stopping OCQueries
- MessageSelector: make filtering optional to allow for usage without filtering
- NotificationManager
	- add support to create and register notification categories based on registered OCSyncIssueTemplates
	- add support for routing and handling notification responses via ComposeNotificationIdentifier() and NotificationResponseHandler category
- NotificationMessagePresenter: implement NotificationResponseHandler category to feed back notification responses to OCMessageQueue

* - ClientRootViewController: rename card message presenter var
- ClientSessionManager: new class to keep track of active client sessions and route messages for presentation. All ClientRootViewController instances should henceforth be created through it
- CardIssueMessagePresenter: add bookmark UUID to .identifier and adapt to new presentation completionHandler
- ServerListTableViewController
	- add support for ClientSessionManager delegation
	- add support for presenting messages after successful login
- SyncIssueMessagePresenter: add bookmark UUID to .identifier and adapt to new presentation completionHandler
- NotificationMessagePresenter
	- add bookmark UUID to .identifier and adapt to new presentation completionHandler
	- implement endPresentationOfMessage to remove notifications for removed messages
	- add support for taps on notifications

* - SDK update
- ClientSessionManager: change showMessage(notification:) and ClientSessionManagerDelegate from binary to based on priorities
- AlertView and AlertViewController: add optional header view and label
- CardIssueMessagePresenter: show bookmark .shortName as header for messages not belonging to the presenter's bookmark
- SceneDelegate and ThemeWindow: tracking which window is visible and in foreground
- ServerListTableViewController > ClientSessionManagerDelegate:
	- take foreground status into account when computing the presentation priority
	- add support for presenting messages from other accounts, based on foreground status and availability of "unused" scenes

* - Update SDK

* Add support for grouping messages:
- new MessageGroup class to store messages in groups
- MessageGroupCell replaces MessageCell
	- improve performance
	- add alternative layout for groups with more than one message:
		- switch to apply a choice to more than one message; badge count if switch is on
		- button to show all messages
- extend MessageSelector with support for maintaining MessageGroups
- MessageTableViewController to show messages as a list of individual messages

* - Update SDK

* - Update SDK

* - remove SyncIssueMessagePresenter as it is not used
- show messages only if they haven't already been resolved (previously shown until removed from the queue)
- update code to use OCMessage properties rather than OCMessage.syncIssue, replacing OCSyncIssue dependant code whereever possible
- add MessageQueueExample.swift to show how to use OCMessageQueue from within the app
- fix bug where messages without categoryIdentifier would be grouped together

* FileProvider changes:
- re-instate local error handling for creation of folders in the File Provider
- add support for class settings to disable local error handling for test purposes

* - bring up an alert if a new folder is attampted to be created in a location where another item with the same name already exists
- add support for providing a title to the namecheck/validation result in NamingViewController

* - OCMessage+Extension: convenience method to simplify presentation of OCMessages in the app
- move MessageSelector from ClientActivityViewController to ClientRootViewController for joint access from different parts of the app
- MessageSelector: add option to also collect and update a Set of OCSyncRecordIDs found in active messages
- ClientActivityCell + ClientActivityViewController: add support to show tappable warning sign instead of progress indicator if a message for the activity's sync record ID has been found
- ClientItemCell + FileListTableViewcontroller/ClientQueryViewController: add support to show tappable warning sign instead of progress indicator or more button if a message for the item's active sync record IDs has been found

* - Remove unused code from SDk

* - display "All done" message in Status tab when there are no messages or activities going on

* - Fix review findings

* - more nuanced status message in case of pending issues

* - Adding key command support to AlertViewController

* - remove duplicate/reunify diverged code in "ownCloudAppShared/SDK Extensions/OCItem+Extension.swift" and "ownCloud/SDK Extensions/OCItem+Extension.swift"
	- move app-specific code to OCItem+AppExtension.swift
	- update ownCloudAppShared/SDK Extensions/OCItem+Extension.swift with all changes
- optimize speed of:
	- OCItem+Extension.isShareRootItem() by checking only the parent item and cache the result for the duration of the runloop iteration
	- OCItem+Extension.shareRootItem(from:) by wrapping all SQLite lookups into a single transaction, avoiding unnecessary idle/wait time

* - Update SDK to add Cancel option for uploads

* - Add initial call to (re)set app icon count in case the app got deleted with messages but kept the count upon reinstall

* - Address finding (5) in #662 via SDK update ("ugly" authentication error message)

* - Extensions / Categories:
	- move OCBookmark.userName, .displayName and .shortName to ownCloudApp.framework so it becomes available to the NotificationMessagePresenter
- NotificationManager:
	- extend NotificationManager to provide equivalents for relevant methods of UNUserNotificationCenter
	- change all usages of UNUserNotificationCenter to NotificationManager
- NotificationMessagePresenter:
	- add account information to notifications
	- only add account information if the user has more than one account in the app
- Update SDK

* - Update SDK to address (6)

* - fix finding (6) glitch where message/warning icons wouldn't disappear when resuming a download or upload

* - Update SDK

* - Update SDK

Co-authored-by: Matthias Hühne <github@hosy.de>
Co-authored-by: Michael Neuwert <mn@neuwert-media.com>
Co-authored-by: Matthias Hühne <mhuehne@owncloud.com>

* - Update SDK to develop (now containing all changes from feature/message-queue)

* - Fix static analyzer warnings

* - Update SDK to fix owncloud/enterprise#4053 and owncloud/ios-app#732

* - Update SDK

* [feature/branding] Branding / Static Login support (#637)

* - New Static Login
	- StaticLoginBundle: container for all Static Login parameters
	- StaticLoginProfile: individual parameters for a Static Login
	- StaticLoginViewController: WIP implementation for a Static Login UI
- Theme extensions
	- UIButton support
	- ThemeStyleIdentifier typealias for more expressive APIs
- Static Table View
	- added support for headerView and footerView of section

* - Add closeHandler-support to ClientRootViewController to run a block when a connection is closed by the user
- Fix crash in OCItem+Extension.lastModifiedInReadableFormat by adding a missing check
- Make sure ProgressHUDViewController.dismiss() always calls the completion block
- ServerListTableViewController enhancements:
    - hasToolbar-property to turn the toolbar on/off
    - make initialization with XIB optional
    - add showModal(), didUpdateServerList() and openBookmark() hooks for subclasses
- Add StaticLoginServerListViewController (ServerListTableViewController subclass)
- Add "Done" button to SettingsViewController if it is used as the rootViewController
- Add loginThemeStyleID to StaticLoginBundle
- Make StaticLoginSetupViewController feature-complete
- Add new ThemeView that can be used as container for ThemeAppliers that get removed automatically when the view is freed
- Relocate FullWidthHeaderView and make it a ThemeView subview
- Extend StaticTableViewSection.addButtonFooter() to support cancel-only versions
- Add toolbar to StaticLoginViewController
- Fix copyright notice formatting

* New Iconset for iOS: Filetype Icons

* Documentation for the app color scheme

* markdown definition for color theme values

* added links to type definitons

* added color definition

* added global colors

* added color values for dark scheme

* added light and classic color scheme

* Preparing branding support with themes and colors from plist file

* - using theme styles from plist file
- using splash image in welcome view

* set tint color for server list icon

* Add example images

* Change the color of the bookmark-logo

* Change colors to match example-theme

* use different icons

* All colors are not customizable by setting the color in Theme.plist. If the key is not set in plist, the default value will be used.

* fixed resolving theme color pair

* Added appiconset and changes branding colors

* Color adjustments and edited bookmark-logo

* Add Surf logos and colors

* setting new theme generic colors and reading them from keypath, if existing

* Add Surf logos and colors

* Add first SURF branding

* removed iOS 13 code

* Merge branch 'master' into Design

* fixed broken project file

* fixed broken plist file after merge

* Cleanup after cherry-pick from Design branch

* Add colors from SURF

* Add changes to Fastfile from tag 1.1.0

* Comment out Themes tests

* removed bookmark icon tint color

* Add new bookmark-icon.png

* Change the name to SURFdrive

* changed app name in build settings instead of target name

* customize search bar

* Add new bookmark icon and polish color settings

* Add new bookmark icon and polish color settings

* Change the name to SURFdrive, again

* - searchbar customization
- theming delete button in pass code view

* - Fix Swift and SwiftLint warnings
- Remove unused UploadsSettingsSection (was replaced by MediaUploadSettings)

* - adopted Fastfile to set the app name
- added app name to Themes.plist
- removed unneeded theme

* set correct path in Fastfile

* removed output name, because Bitrise expects other ipa name

* using branded image for quick access tab

* setting the placeholder color for UISearchBar text field in iOS 13

* check if app is branded, disable help and feedback, if branded app

* - support for branded urls (help, privacy)
- changed plist name

* hide Theme settings for branded apps

* using correct branding file name

* added tint color for alert view labels

* Branded App Name fixes

* Using correct app name, if branded

* Change spp name in extension targets for branded apps

* - using newest SDK for custom User-Agent
- setting CFBundleName by fastlane
- fixed badge text bug, caused by pango version
- updated Gems

* Added a vendor setting, if an account can be added, in UI (can b

* - changed AppName to use organizationNamer of Bundle in Branding.plist
- added maxBookmarkCount
- cleanup
- bug fixing

* - only show Feedback only for unbranded clients
- Fastlane: use new plist value from bundle dictionary as appName
- use correct logo image, without tint color
- set custom logo in Branding.plist

* added feedback mail

* adding a Done button to the settings view, if the Settings-View was presented modally

* Add image for the branded login

* - PushTransition:
	- allow customization of the recovery at the transition end with a new PushTransitionRecovery block option
- PushTransitionDelegate:
	- support handing through a PushTransitionRecovery block to PushTransition
- ServerListTableViewController:
	- replace all remaining present() calls with showModal() calls
	- add .pushFromViewController property to customize presentation with PushTransition
- StaticLoginServerListViewController:
	 - override showModal() to change the modalPresentationStyle of presented view controllers from .fullScreen to .overFullScreen
- StaticLoginViewController:
	- fix transition of .contentViewController if the same value is set again
	- add example of how the PushTransitionRecovery block could be used to fix the issue of disappearing views after transition (was an intermediate solution, preserved for the case it's needed again in the future)

* Updated with branding changes for better branding support and using the ownCloud.online theme

* fixed merge problems with new version

* - fixed title color in release notes
- fixed header/footer height, if nil (seen in release notes view controller)

* changed online creation of badge file for icon creation to local creation

* added own fastlane action to read APP_SHORT_VERSION and APP_VERSION from Xcode project file and set it as badge icon values

* changed variable names to match values

* removed build number, because of missing space

* - added missing localization strings
- fixed problem, when footer or header view was not nil
- fixed theme for activity view

* - fixed login problem on iOS 12
- fixed crash on logout
(both SingleAccount)

* change the folder color

* - remove duplicated files, accidentally moved new line
- update to latest/develop SDK version

* - remove unused LibraryFilesTableViewController.swift
- re-add missing empty line to UploadMediaAction.swift

* - Remove duplicate file ownCloudAppFramework/Info.plist

* - Remove unused file

* - remove redundant code, fix header comments

* - remove code that'll be never executed in StaticLoginViewController
- fixed force-cast warning in StaticLoginBundle
- switched ThemeProvider to use URLs rather than file base name
- ThemeStyle.registerDefaultStyles() registers default styles if no brandingURL can be determined
- removed repeated code from VendorServices and bundled it up in .brandingURL, .brandingURLFor(name:) and .brandingProperties
- removed duplicate entry for/duplicate compilation of UIView+Extension.swift

* - Fix merge errors in project file

* - Fix file headers
- Small simplification / code de-duplication

* - Use enums instead of plain numbers for sections and rows

* - make sure Branding.plist/Profiles/[n]/allowedAuthenticationMethods is honored
- add error message when no allowed authentication method is available from the server

* - Solved code review findings
- Added missing styles key in Branding.plist
- Using styles from Branding.plist for theming

* - ServerListTableViewController: make UIActivityIndicatorView indicating the app is connecting use the correct style so it has better visibility
- StaticLoginProfile, StaticLoginBundle and StaticLoginSetupViewController: added support for .promptForPasswordAuth and .promptForTokenAuth (with .prompt fallback)

* fixed QA findings:
- do not show cancel button, if canAddAccount is enabled and no account was configured
- set a working demo url
- use feedbackMail, when configured
- removed logo and background name from branding.plist, these values are not configurable
- moved organization name entry one level higher
- removed app name key
- removed translucence from toolbar

* Fixed QA finding:
Connecting to insecure http connection or after presenting a connection issue is now working

* moved branded images, changed names

* removed unneeded code and values

* fixed QA finding 11 crash, when Help and Privacy values was not provided

* fixed QA finding 14:
- do not show Cancel button, if no account was added
- show Welcome title instead of profile name for token based authentication

* fixed QA finding 17:
- show an alert message, when no profile URL was provided, instead of crashing
- fixed localization

* fixed QA finding 16, 3:
- using ServerListBookmarkCell for showing account infos in list with more informations
- moved "Add Account" to toolbar button

* fixed QA finding 9:
- fixed crash on delete account
- show welcome screen, when all accounts was deleted

* fixed QA finding 10:
always show toolbar, to have permanent access to app settings

* fixed QA finding 13, skip profile selection, when only one profile is available

* fixed QA finding 21, removed duplicated "Settings" in single account view

* added documentation for theme color values

* fixed reading and setting statusBar values from Branding.plist

* isBranded is only true, if Profiles was defined in Branding.plist. The file Branding.plist will be kept, even when the build is the regular iOS app build.

* - fixed findings, when app was not build as branded app to match the colors and icons like in the existing regular iOS app
- updated to correct images
- renamed image files

Co-authored-by: Felix Schwarz <felix.schwarz@iospirit.com>
Co-authored-by: wuenschedesign <40062503+wuenschedesign@users.noreply.github.com>
Co-authored-by: Christian Scherm <cscherm@owncloud.com>
Co-authored-by: Felix Schwarz <fs-git@iospirit.com>

* - Update SDK to provide additional improvements to the fix for owncloud/ios-app#732 and owncloud/enterprise#4053

* fixed localization string

* fixed fastlane getting custom app name

* fixed branding the color of the text field cursor

* new app version for TestFlight build

* first release notes draft for version 11.4

* Fix for NSOperationQueue issue in iOS13.6

Media upload got broken on iOS13.6, since NSOperationQueue has spawned too many export / upload operations simultaneously leading to thread starvation.

* Added PLCrashReporter to log crashes (#738)

* Integrated PLCrashReporter

* Modified text file mentioning licenses of 3rd party components

* Moved import statement to the top

Co-authored-by: Michael Neuwert <mn@neuwert-media.com>

* added rounded corners to server list in branding UI

* enabled beta build and warning

* renamed and moved brandable image files

* added image to app target

* fixed crash when deleting a bookmark

* Add PLCrashReported to FileProvider extension (#765)

* Integrated PLCrashReporter

* Modified text file mentioning licenses of 3rd party components

* Moved import statement to the top

* Fixed indentation issues

* Added crash reporting to file provider

* Changed a way PLCrashReporter is initialized

Initialize it as soon as FileProvider extension is loaded into memory

* Moved crash reporter initialization to -[FileProviderExtension init]

* - Add "CRASH_REPORTER" tag to File Provider crash report logging

* Made sure crash reporter is initialized once

Co-authored-by: Michael Neuwert <mn@neuwert-media.com>
Co-authored-by: Felix Schwarz <fs-git@iospirit.com>

* #747 added missing UTI conversion for MindNode and iThoughts file extensions. Furthermore there is a fallback for pdf extension, because we have a tester who reported that PDF files are greyed out in FileProvidfer (#754)

* #745 before this fix, not only available offline files were shown, all locally available files was shown (#768)

* - added missing release notes infos for release 11.4
- changed storing and reading base64 encoded images for iOS 12

* - added "Share Sheet" to release notes
- fixed some wording

* [feature/selection-counter-label] File List: Selected items counter label (#771)

* New label to show how many items are selected in the file list

* removed the "Select items" title, if no item is selected, because it can confuse the user

* clear label, if no item is selected

* - moved number of selected items to navigation title
- addressed #613: showing number of folder items in footer label

* - update title when selection did end
- empty title view before, when setting the title

* fixed localization

* - fixed empty item list label
- fixed single item label

* using short strings for better readability

* [feature/migration] Migration from the app with same Bundle ID (#660)

* First version of account migration

- Only basic auth supported
- No UI
- No settings are migrated
- Legacy data not yet deleted

* Some minor changes

* Migration with the same bundle ID implemented

- Still the UI is just a draft
- OAuth2 token refresh isn’t really working and requires complete re-authentication

* Updated fastlane file to create dynamic builds, which means you can pass in bundle ids, keychain group and provisioning profile for the generated file. Now it is possible to build an owncloud.online iOS app beside the enterprise app.
Also updated to the new version number 11.4.

* Fixed some swift lint warnings

* Adjusted expiration date handling

* Fixed an issue with OAuth2 re-authentication if no valid auth data was found

* Forgot to comment in copying of auth data to bookmark

* Showing succes in iOS13 and higher

* Minor changes

- Adapted to latest master oC SDK
- Changed appearance of checkmarks in the migration view

* - Resolve TODO / remove duplicated OCItemTracker code

* - Update SDK to include additional auth data update logging
- remove unneeded calls to OCBookmarkManager.saveBookmarks()
- fix Migration.legacyDataFound getter warning

* - Update SDK

* Added more logs to migration mechanism

* - Update SDK

* Invalidating oauth token upon migration

This should trigger a re-fresh since in the legacy app we didn’t store expiration date. Worst case user will have to re-login.

* Added icons for iOS releases prior to 13.x

- Exported some SF Symbols to PDF
- Displaying migration step success or failure with an icon

* Added icons for different migration activity types

* Some UI refinements

- Tweaked layou size and color of some elements in MigrationActivityCell
- Localized relevant strings
- Fixed swift lint warnings

* Fixed year in the licensing comment: 2019 vs 2020

* Presenting an error  on failed database opening attempt

If during migration legacy app’s database can’t be opened, error will be presented to the user

* Fixed a review finding

When retrieving credentials from the keychain stored by the legacy app, error is returned by ‘SecItemCopyMatching’, in the migration UI the account migration will be shown as failed instead of potentially showing nothing.

* Added a UI to approve / reject connection issues

* Skipping invalid user records

Found a case in which legacy app has stored multiple rows for the same user ID

* Fixed: displayUserName vs userName

* Changed presentation style of migration view controller

To avoid accidental dismissal before the migration is finished

* Added biometrical identification setting migration

Touch ID, Face ID depending on the hardware support

* SDK update

* Fixed merge issues

* Test commit with debug logs enabled

* Added more logs and fixed small issues

* Fixed an issue with InstantUpload settings hanging

There was an issue with InstantUpload folder creation leading to DispatchGroup.leave() not being called and thus hanging in wait() forever.

Co-authored-by: Michael Neuwert <mn@neuwert-media.com>
Co-authored-by: Matthias Hühne <github@hosy.de>
Co-authored-by: Felix Schwarz <fs-git@iospirit.com>

* [feature/extended-share-sheet-reorg] Share Sheet Extension (re-organized) (#752)

* - remove UIApplication.shared dependency
	- new UserInterfaceContext class, providing access to what UIApplication (and extensions thereof) were previously accessed
	- apps and extensions can implement an UserInterfaceContext extension implementing the UserInterfaceContextProvider protocol to provide access to supported UI elements
	- allowed removal of UIApplication+Extension
- moving major parts from ownCloud to ownCloudAppShared (major refactoring)
	- declare relevant methods and properties open or public
	- adapt all relevant XIBs
- cleanups
	- move "feedback" settings from MoreSettingsSection to VendorServices ("app") and update CONFIGURATION.md accordingly
	- move all intents from ownCloudAppShared to the intents app extension
	- merge AppLockHelper method into AppLockManager as a class-level property (AppLockManager.isPassCodeEnabled)
	- make UIDevice.current.isIpad a property (rather than a method)
	- fix indentations in many areas

* - moving Action base class to ownCloudAppShared
- moving FileListTableViewController to ownCloudAppShared, decouple big dependencies like the more view and open item handling so it can remain in the app itself

* - fix AppIcon-emm icon set
- QueryListTableViewController:
	- factor out multi selection
	- move to ownCloudAppShared
- adapt and move rest of app and framework code where needed

* - factor out inline message support for ClientQueryViewController
- move ClientQueryViewController to ownCloudAppShared
- move ClientDirectoryPickerViewController to ownCloudAppShared

* - move NamingViewController and CreateFolderAction to ownCloudAppShared
- move TVG resources to ownCloudAppShared
- start integration of feature/extended-share-sheet additions

Co-authored-by: Matthias Hühne <github@hosy.de>

* - transfer Fastfile changes from feature/extended-share-sheet
- transfer ImportFilesController removal from feature/extended-share-sheet
- transfer Localizable.strings changes from feature/extended-share-sheet

Co-authored-by: Matthias Hühne <github@hosy.de>

* - move NamingViewController and CreateFolderAction to ownCloudAppShared
- move TVG resources to ownCloudAppShared

* - remove unnecessary type dependencies in UserInterfaceContext
- new AppExtensionNavigationController to simplify Theme support and automated theme switching in App Extensions
- refactor ShareNavigationController as a AppExtensionNavigationController subclass

* - fix issue where OCCore is returned prematurely and multiple times

* - fix format error in ar localization
- add Localizable.strings to ownCloudAppShared, but also prepare for breaking out the relevant strings via .slocalized method
- optimize access to the ownCloudAppShared bundle

* Share Sheet Review:
- rename DisplayName from "ownCloud Share Extension" to "Share to ownCloud"
- change account selection wording to not include a reference to "file" (due to singular, plural).
- ClientDirectoryPickerViewController + AppLockManager
	- remove ShareViewController-specific code and instead add a new cancelAction property that takes a block to execute if the Cancel button is pressed
- ShareViewController
	- add NSErrorDomain.ShareViewErrorDomain instead of direct string use
	- remove ownCloud logo from account list (-> not brandable)
	- adapt code to use .cancelAction properties in ClientDirectoryPickerViewController + AppLockManager
	- update code to only use weak references to OCCore (previously kept a zombie instance around, causing issues)
	- use a DispatchGroup instead of the attachment index to track when import has finished
	- only signal request completion to the extensionContext once the OCCore has finished controlled shut down
	- fix error message in importFile if a nil value is returned for import progress

* - Update SDK

* - Updated to Xcode 11.6

* - fixed server list bookmark icon
- set the display name of the extension to the title
- set the display name in fastlane script for building a branded app
- fixed delete button colors in passcode viewcontroller

* fixed x-alignment for the progress view

* - Update SDK to solve false negative certificate validation

* Changed deployment target to 12.0, same as app target. Needed, that the share extension appears in the share sheet.

* - fixed presenting sort bar on iOS 12
- only add section, when no account or more than one account is configured

* - FileProvider Extension
	- added new special item path and id to retrieve a special, internal service
	- add support for providing service sources
- FileProviderServiceSource
	- provides XPC service for accessing / controlling the File Provider from a different process
	- supported methods are placed in the OCFileProviderServicesHost protocol
- ownCloudApp.framework
	- extensions for OCBookmark and OCVault to dynamically compose name and URL of the internal File Provider service
	- OCCore extension to connect to the File Provider, make calls and close the connection with only a few lines of code
- ownCloudAppShared.framework
	- AppExtensionNavigationController: add support to run a block when the navigation control is disappearing (typically indicating dismissal of the extension)
- ShareViewController
	- change importFile() to send files to the File Provider for upload
	- keeps track of requested OCCores and properly returns them to OCCoreManager
	- simplify presentation of directory picker if there's only one account

* reorganized UI, especially for iOS 12, but also cleaner usage of ClientDirectoryViewController implementation
- solved iOS 12 UI problems

* fixed: push transition delegate was not called, because of wrong permissions

* fixed file provider access in share sheet importFile function

* changes from milestone/1.4 branch

* new build number

* fixed code signing issues for share extension

* fixed release profile for share extension

* bring back the ImportFilesController, which is needed for Inter-App files import

* fixed importing files with original file name

* support for multiple file import in ShareViewController, which is needed for receiving files via AirDrop

* - ImportFilesController:
	- use a DispatchGroup to return the requested OCCore only after all uploads have been scheduled
	- code simplification for better readability
- ShareViewController:
	- dismiss view controller before returning core, to avoid dangling strong references from KVO of Core in ClientQueryViewController
	- factor out code for upload via File Provider
- OCCore+FPServices: provide dedicated error handler parameter for handling XPC connection errors
- ClientDirectoryPickerViewController: remove direct usage of extensionContext (duplicate effort, too specific)
- ClientQueryViewController: make it clearer that `core` should only be weakly held by quotaObservation
- OCCore+UploadByFileProvider:
	- factored out code for upload via File Provider
	- automatic management of temporary copies (creating them automatically if needed)
- SDK update

* - changes in document types
- hardcoded file provider display name

* save plain text as RTF file

* Saving shared plain-text as txt file

* if item is an url, the content will be downloaded and saved

* fixed crash when deleting a bookmark

* - OCFileProviderServiceSession: dedicated class to access FP services
	- queues work to avoid parallel access to the same remote OCCore
	- automatic XPC connection management to avoid concurrent connections and save time for bringing up and down a new XPC connection for every request
	- can be used without an OCCore on the client side
- refactor OCCore+FPServices to use OCFileProviderServiceSession under the hood

* - Add localizable strings
- file import via File Provider: refactor to remove dependency on OCCore
- OCFileProviderServiceSession
	- allow direct usage via simplified APIs
	- add incrementSessionUsage/decrementSessionUsage to keep the session alive beyond the last action
- ShareViewController:
	- add error handling
	- serialize uploads for meaningful ability to cancel and lower resource usage
- FullProgressViewController: new view controller to display progress information modally, while providing a Cancel option
- project: add relevant frameworks to share sheet target to avoid linker error at runtime

Co-authored-by: Matthias Hühne <github@hosy.de>

* Reverted streaming enabled setting (#769)

Co-authored-by: Michael Neuwert <mn@neuwert-media.com>
Co-authored-by: Matthias Hühne <github@hosy.de>

* - new build number
- show release notes for a new build number, instead of a new version number
- fixed release notes wording

* updated emm app icon

* added missing release note for item counter

* update fastlane file with share extension bundle ids and provisioning profiles

* fixed overlapping tab bar over table view

* [feature/diagnostic] Diagnostic information (#762)

* - VendorServices: re-enable beta build
- ClientActivityViewController: add swipe action to show diagnostic information on a sync entry
- DiagnosticViewController: display diagnostic information as native table, provide opti…
- added a new Branding.plist parameter canEditAccount
- release notes view is now disabled for branded clients
- removed the server address from the welcome message. Now only the username is displayed
…se "public.file-url" as type identifier for loading the file instead of the file mime type
… trigger a connection retry - even if they shared the same UUID (via SDK update)
…se "public.file-url" as type identifier for loading the file instead of the file mime type (#820)
… Picker (#817)

* #814 adding a new row "Favorites" on top of the directory picker file list to quickly select favorite collection items

* disabled file items in favorite view

* - disabled dragging in directory picker
- disabled context menu in directory picker
- moved code to a separate function

* - only show Favorites, if favorite items were set
- disable select button in favorite view
- disabled cell swipping in favorite view
- show cancel button in favorite view

* show favorites only in root view
- only show URL rows, when URL was provided
- do not show IAP section in settings, if client is branded
- ScanViewController + ImportFilesController: add file protection to temporary directories
- OpenInAction: fix issue #825 by making temporary copies (clones) of all files to open/export, using the item's name rather than the name(s) of the cloned file(s)
@CLAassistant
Copy link

CLAassistant commented Nov 20, 2020

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.
4 out of 6 committers have signed the CLA.

✅ dschmidt
✅ hosy
✅ mneuwert
✅ michaelstingl
❌ felix-schwarz
❌ Michael Neuwert


Michael Neuwert seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.
You have signed the CLA already but the status is still pending? Let us recheck it.

@felix-schwarz felix-schwarz added this to the 11.5.0-Next milestone Nov 30, 2020
@felix-schwarz felix-schwarz linked an issue Nov 30, 2020 that may be closed by this pull request
9 tasks
@jesmrec
Copy link
Contributor

jesmrec commented Dec 15, 2020

QA

The aim of the current PR QA stage is checking how the documentation is generated, not the documentation itself. All entries in the doc will be checked at the time the MDM fields' behaviour is tested.

1) Script execution

execution of generate_docs.sh finishes with TEST SUCCEEDED

no problems detected during the execution

2) JSON file

The JSON file generated by the script is correctly shaped. Every object contains several fields and meta-fields (do not appear in the final document, but probably needed somehow). It'd be interesting to write somewhere (adoc file, documentation or wherever), about it, so that the reader/system admin/whoever can understand correctly what do they mean.

3) adoc file

This is the product of the script. With testing purposes, i've rendered it to html5 by using the asciidoctor (just for an easier visualization and comparison)

Document is correctly generated, but not with all objects in the JSON file (this was already reported in the chats). The missing objects are:

  • connection-allowed-authentication-methods in category Security
  • connection.connection-preferred-authentication-methods in category Security
  • allow-cellular in category Connection

@michaelstingl
Copy link
Contributor

  • connection-allowed-authentication-methods in category Security
  • connection.connection-preferred-authentication-methods in category Security
  • allow-cellular in category Connection

@dschmidt this 3 doesn't get picked up from gomplate. They're in JSON, but they aren't in the adoc.

@michaelstingl
Copy link
Contributor

@felix-schwarz @mneuwert can we merge this? What's left? Open new issue for the remaining tasks?

- update gomplate template ios_mdm_tables.adoc.tmpl to switch to category tags
- update CONFIGURATION.json and ios_mdm_tables.adoc with latest additions
- fix EarlGrey build error in project
@felix-schwarz felix-schwarz merged commit ddd88a8 into milestone/11.5 Dec 21, 2020
@delete-merged-branch delete-merged-branch bot deleted the feature/settings-metadata branch December 21, 2020 11:40
@felix-schwarz
Copy link
Contributor Author

@michaelstingl As last addition, I added the space-less categoryTags and merged the PR. The adoc generation issue is still open and now tracked in #854.

@mneuwert
Copy link
Contributor

mneuwert commented Dec 22, 2020

@felix-schwarz After merging your changes into feature/mdm_enhancements and while generating docs with antora I get following warnings:

asciidoctor: WARNING: ios_mdm.adoc: line 37: tag 'actions' not found in include file: modules/ROOT/pages/ios_mdm_tables.adoc
asciidoctor: WARNING: ios_mdm.adoc: line 49: tag 'passcode' not found in include file: modules/ROOT/pages/ios_mdm_tables.adoc
asciidoctor: WARNING: ios_mdm.adoc: line 89: tag 'shortcuts' not found in include file: modules/ROOT/pages/ios_mdm_tables.adoc

So, at least first two have been there before..

@michaelstingl
Copy link
Contributor

Are the tags actions, passcode and shortcuts in the JSON?

@mneuwert
Copy link
Contributor

mneuwert commented Dec 22, 2020

@michaelstingl I had to regenerate JSON, so please ignore my previous comment.. Shortcuts need some more implementation work and 'display settings' are missing eventually due to problems in template file...

Latest checked in configuration does include actions and passcode at least (in mdm_enhancements branch though)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[FEATURE REQUEST] Generate OCClasseSettings documentation automatically
7 participants