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/folder-savedsearch] Support saving folder searches #1205

Closed

Conversation

felix-schwarz
Copy link
Contributor

@felix-schwarz felix-schwarz commented Apr 25, 2023

Description

This PR adds support for saving folder-scoped searches.

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

@CLAassistant
Copy link

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

@jesmrec
Copy link
Contributor

jesmrec commented May 3, 2023

(1)

  1. In any account, click on lens icon to search
  2. Select Tree, Space or Account scope
  3. Enter something in the searching bar

Current: app crashes
Expected: no crash

Crash log:

ownCloud_3_May_2023_at_16_46_01.log.txt

These are the last output lines in Xcode before crashing:

2023-05-03 16:50:13.419000+0200 ownCloud[1473.276606] 🔵 | [APP] SearchSegments: [<OCSearchSegment: 0x139438880, originalString: A, segmentedString: A hasCursor: 1, cursorOffset: 1, range: {0, 1}>] [SearchTokenizer.swift:60|FULL]
2023-05-03 16:50:13.421000+0200 ownCloud[1473.276606] 🔵 | [OS] BEF: Before: (
    "<OCDataSourceCompositionRecord: 0x1390a1ae0>"
) [NSLog:0|FULL]
2023-05-03 16:50:13.422000+0200 ownCloud[1473.276606] 🔵 | [OS] BEF: After: (
    "<OCDataSourceCompositionRecord: 0x139bbde50>",
    "<OCDataSourceCompositionRecord: 0x1390a1ae0>"
) [NSLog:0|FULL]
2023-05-03 16:50:13.423000+0200 ownCloud[1473:276909] ⚪️ | [SQL, Collation] Collation OCLOCALIZED requested by SQLite database [OCSQLiteDB.m:255|FULL]
2023-05-03 16:50:13.428000+0200 ownCloud[1473.276606] 🔵 | [OS] *** Assertion failure in -[__UIDiffableDataSourceSnapshot _validateReloadUpdateThrowingIfNeeded:], _UIDiffableDataSourceSnapshotImpl.m:368 [NSLog:0|FULL]

iPhoneXR v16.4
cf814abc

felix-schwarz added a commit that referenced this pull request May 4, 2023
- fix finding (1) in #1205, log a message when reloading a non-visible/non-existing section is attempted
@felix-schwarz
Copy link
Contributor Author

@jesmrec (1) is fixed in #1207

@jesmrec
Copy link
Contributor

jesmrec commented May 4, 2023

Previous behaviour: Folder scope did only include Save as search template, other scopes with Save search as well

Now, Folder scope also includes Save search

Checked Save search in:

  • Personal space (oCIS)
  • Custom space (oCIS)
  • Personal space (oC10)
  • Saving different searchings
  • Remove different searchings

Crash (1) also fixed

Approved on my side.

@jesmrec jesmrec added the Approved by QA Approved by QA label May 4, 2023
@delete-merged-branch delete-merged-branch bot deleted the branch feature/new-sharing May 22, 2023 10:52
@felix-schwarz
Copy link
Contributor Author

Merged into #1095.

@felix-schwarz felix-schwarz mentioned this pull request May 22, 2023
25 tasks
hosy added a commit that referenced this pull request Jun 14, 2023
* - SDK update to fix possible crash bug
- address open/public Swift compiler warnings

* - bump build number to 234

* - bump build number to 235

* Fix issues with ocis sharing:
- respect OCCapabilities.federatedSharingSupported
- GroupSharingTableViewController: fix delete share issue by calling the correct method

* - bump version to 236

* - fix Xcode 14 warnings

* - upgrade SDK
- adapt to OCShare.itemType type change
- replace UIImage(systemName:) code with one using OCSymbol
- fix more Xcode 14 warnings

* - update SDK to gain OCStatistic capabilities
- ClientItemViewController:
	- implement support for "folder removed" state
	- adjust message spacing
	- refactor navigation bar code
	- add footer to display statistics for the current location, feeding from OCQuery-provided OCStatistics
	- prepare to also include quota information in the footer
- update KNOWN_ISSUES.md

* - ItemListCell: align separator layout guide with icon
- ViewCell: add separatorLayoutGuideCustomizer to allow customization of separator layout guide for individual views
- ClientItemViewController: add support to display quota information (space remaining)
- UIView+EmbedAndLayout: add code to embed multiple views vertically, modify existing ConstraintSet type

* - update SDK to gain fixed "Personal" and "Shares" names

* - ios-sdk: OCSyncActionCopyMove: prevent copying and moving of items into themselves
- ViewCell: fix seperatorLayoutGuide constraint on reuse (could cause visual glitch of full-length separator line when there shouldn't have been one)
- update known issues

* - SDK update to gain Accept-Language header addition for in-app web app presentation
- ClientWebAppViewController: implement logic to immediately dismiss the view controller when tapping the close button, but keep the web view alive until the "close" event arrives from the webview - or 10 seconds have passed

* - Action: add new class setting for excluded activities
- OpenInAction: honor excluded activities, bring up UIActivityViewController instead of UIDocumentInteractionController even for a single item if activities are excluded
- ownCloud.xcscheme: add env var example for action.excludedSystemActivities to block copying to pasteboard

* - update SDK to bring over UUID-based Shares Jail detection

* - bump build number to 237

* - StaticLoginSetupViewController: add OCConnection.connect() / .disconnect() to enrich bookmark with metadata and user name during setup. Required to present the correct UI for space-based accounts.

* - bump build number to 238

* - fix "App Provider language always English" via ios-sdk update

* - bump version to 239

* - update SDK for specific error message when trying to open a file that's being processed via open-web or open

* - update SDK

* - ClientSidebarViewController: side bar view controller
- CollectionViewSection: add hideIfEmptyDataSource feature/property
- ClientContext: add ViewControllerPusher protocol and methods for unifying pushing of view controllers to navigation / into view
- OCDrive+Interactions, OCItem+Interactions, OCSavedSearch+Interactions: move to new ClientContext method for pushing

* - CollectionViewController:
	- add support for hierarchic collection views and hierarchic data sources
	- add shouldDeselect() method
	- use snapshot.reconfigureItems() instead of snapshot.reloadItems() for more efficient updates (reuses cell rather than recreating it from scratch)
- CollectionViewCellConfiguration:
	- add new sideBar StyleType
- UIView+EmbedAndLayout: add AnchorSet and extend API to utilize it
- many fixes

* Snapshot with sidebar basically working, before making deeper changes
- App Controllers
	- AppRootViewController: the root view controller of the entire app, manages sidebar and more
	- AppSidebarViewController: side bar view controller, managing the side bar / first view
- Account Connection/Consumer classes
	- AccountConnection: manages a connection for the UI and makes its resources and message available to one or more consumers
	- AccountConnectionPool: creates new and keeps track of AccountConnection instances
	- AccountConnectionRichStatus: helper class to provide a consistent, simple, rich status for the whole account (wip)
	- AccountConsumer: group everything that is linked to an OCCore, allowing simple and clean addition and removal of consumers, providing a layer of separation/abstraction from UI concerns
- Account Controller classes
	- AccountController: links AccountConnection to the UI, provides sidebar content for an account
	- AccountControllerSection: makes AccountController contents available as a CollectionViewSection
	- AccountControllerCell: provides a cell representation for an AccountController, providing an icon to disconnect ("eject") a connection
- DriveListCell: add an icon for the sidebar, representing the (special) kind of drive
- CollectionView:
	- CollectionSidebarViewController: extend ViewControllerNavigationPusher with sidebar view controller parameter
	- CollectionViewCellProvider+StandardImplementations: add cell provider for .sidebar style type
	- CollectionViewSection:
		- implement OCDataItem + OCDataItemVersioning protocol
		- improve support for handling dynamic updates in hierarchic layouts
	- CollectionViewController:
		- add support providing sections from an OCDataSource (just set .sectionsDataSource)
		- properly support per-section ClientContext (use section.clientContext if set)
- OCDataItem+InteractionProtocols: add new, optional method to DataItemSelectionInteraction to provide control over whether an item should be selectable
- OCLocation+Interactions: implement the DataItemSelectionInteraction
- general: move many classes from ownCloud.app to ownCloudApp.framework
- Temporary changes:
	- ClientRootViewController: semi-functional, intermediate version to validate side bar design, to be removed entirely
	- ClientTabBarController: see ClientRootViewController
	- SceneDelegate: move to AppRootViewController as root view controller

* - move from UIImage(systemName:) to OCSymbol.icon(forSymbolName:) in most places
- split AppSidebarViewController into framework (ClientSidebarViewController in ownCloudAppShared) and app (extension ClientSidebarViewController) parts and extend the implementation with settings and account creation toolbar items
- BookmarkInfoViewController: add hook that gets called when the user taps "Done" and dismisses the view controller
- BookmarkViewController: add extension with convenience method to set up and display the BookmarkViewController for editing and creating new bookmarks
- OCBookmarkManager:
	- OCBookmarkManager+Management: extensions in app and framework to set up and display the BookmarkInfoViewController or delete an account, including confirmation by the user
	- OCBookmarkManager+Locking: move app-local locking of bookmarks to the ownCloudAppShared framework and extend on the concept with new attemptLock() method
- AccountConnection:
	- add new .noCore status to differentiate it from .offline
	- make consumer optional for connect() and disconnect()
	- post AccountConnection.StatusChangedNotification notifications when .status changes
	- RichStatus: add property for labeling the interaction
- AccountController:
	- add saved searches to the items data source
	- AccountControllerCell: listen to AccountConnection.StatusChangedNotification to update colored status indicator, fix other status reporting glitches
- SavedSearchCell: add specific cell for .sideBar style
- Navigation Revocations
	- new toolkit to detect when presented content has disappeared and provide a handling path (consult the respective README.md for details)
	- NavigationRevocationEvent: struct for a rich expression of events like disconnects, drive removals and more
	- NavigationRevocationAction: listen to events and perform an action once they find a matching event, lifetime can be to other objects
	- NavigationRevocationManager: global management of NavigationRevocationAction with memory semantics to allow automatic removal after a NavigationRevocationAction has become obsolete
	- NavigationRevocationTrigger: provides triggers for events such as specific items being removed from a datasource, objects being deallocated and more, can send a global event and/or invoke an action directly
	- UIViewController+NavigationRevocation: provide a simple API to register a view controller for revocation to common events
	- ClientContext: add new NavigationRevocationHandler protocol and property to handle navigation revocations
	- CollectionSidebarViewController: add support for NavigationRevocationHandler
	- OCDrive/OCLocation/OCSavedSearch+Interactions: register view controllers for Navigation Recovation, using NavigationRevocationHandler
- ClientItemViewController:
	- show special drive header only for .project (so not for personal or Shares Jail) spaces
	- fix navigation title

* - bump build number to 240
- AppRootViewController:
	- add focusedBookmark tracking
	- add focusedBookmark specific notificationPresenter and cardMessagePresenter
	- port over message presentation
	- port over beta warning
	- port over review prompting
	- port over enforced passcode setup (as of yet untested)
- BookmarkViewController:
	- ensure editing uses the latest copy from OCBookmarkManager
	- present modally rather than .overFullscreen on iPad
- ClientActivityViewController: add initializer for AccountConnection and use AccountConnectionConsumer to hook into events
- ClientSessionManager: remove unused code, ensure delegates are only weakly referenced
- AccountConnection: complete MessageSelector support
- AccountConnectionConsumer: switch form NSObject to AnyObject, add new method to AccountConnectionMessageUpdates to track message counts
- AccountController: introduce SpecialItems type, property and data source
- AccountControllerCell: add support for message counting badge
- ActionCell: add sidebar support, add badgeCount accessory support
- CollectionSidebarAction:
	- new class, subclassing OCAction to provide specific functionality around Sidebars, f.ex. dynamic creation of view controllers upon selection, keeping track of and caching previously generated view controllers
	- also implements extensions to OCAction to wrap properties
- CollectionSidebarViewController: add new method sectionOfCurrentSelection to easily determine the section in which the currently selected item is located
- ClientSidebarViewController: add .focusedBookmark property (KVO capable)
- OCAction+Interactions: add support for supportsDrop

* - update KNOWN_ISSUES
- AppRootViewController: add support for beta warning, bookmark editing, message presentation, release notes and more
- AppDelegate: launch into AppRootViewController instead of ServerListTableViewController
- remove ServerListTableViewController from target
- ReleaseNotesDatasource: clean up code and make class-level methods what were instance methods
- rename "Search view" to "Saved search"
- AccountConnection: add AuthFailure struct and status and make Status a non-String enum
- AccountConnectionPool: add AccountConnectionAuthErrorConsumer to new connections by default
- refactor authentication error handling into
	- AccountAuthentication* classes
	- AccountConnectionAuthErrorConsumer (as helper for AccountConnection)
	- AccountConnectionErrorHandler (as helper for AccountController)
- AccountController:
	- keep references to important items
	- add support for saved searches
	- add support for OC10 root folder
	- clicking spaces shows a spaces grid (AccountControllerSpacesGridViewController)
- AccountControllerCell: adapt to Status enum changes
- ActionCell: add support for different types (coloring), accessories, badge count, button labels and more
- DriveGridCell: cell subclass to support AccountControllerSpacesGridViewController
- DriveListCell: add grid support
- CollectionViewController:
	- add performDataSourceUpdate() mechanism to avoid changes being made to the data sources while other changes are already made
- CollectionSidebarAction:
	- extend OCAction properties
	- implement class to show view controllers on selection
	- add support for children
- CollectionViewAction: actions to be performed on the collection view when specific items become available
- CollectionViewSection: add support for .grid() layout, fix crash bug
- ClientContext: add alertQueue, bookmarkEditingHandler, .presentationViewController property and present(viewController:animated:completion:) method
- ClientSidebarViewController: add support for default view controller
- ClientDefaultViewController: content shown when nothing is selected in the sidebar
- ClientItemViewController: add select all/deselect all support
- (re)start implementation of location picker (WIP)
- UIView+EmbedAndLayout: add new method for centering another view inside an existing view, with minimum/maxiumum/fixed size and minimum insets
- Theme: add support for split view content themeing, temporarily remove almost all themes until support for them arrives
- ThemeNavigationController: move from ThemeApplierTokens to implementing Themeable
- AppUserActivity: start (re)implementing support for NSUserActivity

* - bump build number to 241

* - update KNOWN_ISSUES
- move OCResourceText+ViewProvider and Down framework from app to ownCloudAppShared as it is needed for a rich spaces view in the location picker
- extract embedding behaviour from AppRootViewController into EmbeddingViewController
- implement ClientLocationPicker and ClientLocationPickerViewController
- rewrite Share Extension based on ClientLocationPicker and ComposedMessageView
- upgrade AutoUploadSecttingsSection and auto photo/video uploads to use ClientLocationPicker and OCLocations
- migrate or partially rewrite CopyAction, MoveAction, ImportFilesController to use ClientLocationPicker
- AccountConnectionPool: add method to disconnect all connections in the pool
- AccountController: add options to
	- change cell appearance
	- hide the account pill
	- (not) auto select the personal folder
- Action:
	- add method to provide a UIBarButtonItem
	- add new location .locationPickerBar for appearance in ClientLocationPicker
- WebApp: ensure apps are presented full screen on iPad, not in a popover
- DriveGridCell: always show title + subtitle to align titles, truncate both at 1 line
- ItemListCell: add support for appearance (ClientItemAppearance) for regular and disabled appearances
- CollectionViewController: add .hideNavigationBar property that does what it says on the tin
- ClientContext: expand validation system to allow passing a ClientContext to validation methods and permission handlers (allows to implement behaviour for f.ex. a specific view controller rather than all view controllers descending from it)
- ClientItemViewController: add .location and .viewControllerUUID properties
- Interactions for OCDrive, OCItem, OCLocation: set bookmarkUUID in locations that are used for newly created ClientItemViewControllers
- ComposedMessageView: add support for .buttons
- OCBookmarkManager+Management: make sure to use exact OCBookmark instance when removing a bookmark
- UINavigationItem+Extension: simplify workaround for iOS 16 navigation title truncation bug
- remove ClientDirectoryPickerViewController and ClientSpacesTableViewController
- bump build number to 241

* - BookmarkViewController/IssuesCardViewController/OCLicenseEnvironment: adapt to OCBookmark.certificateStore change
- xcscheme: add connection.associated-certificates-tracking-rule example that opts in all *.local certificates into certificate change tracking
- remove ClientTabBarController
- update known issues

* - update SDK
- update KNOWN_ISSUES.md
- remove EarlGrey and everything that depends on it
- AccountController:
	- SpecialItems -> ExtraItems to clarify features being distinct
	- collect "real" special items in three dictionaries rather than each in its own instance variable

* - remove legacy migration

* - DisplayHostViewController: update to use an OCDataSource subscription to track underlying items, not an OCQuery
- AccountController: add Quick Access, including Favorites and Available Offline
- OpenInWebAppAction: add keyboard shortcut (fixing finding in #1151)
- OCSavedSearch+Interactions: add new .customIconName and .useNameAsTitle properties and helper methods
- SavedSearchCell: add support for .customIconName and .useNameAsTitle
- CollectionViewController: add .insert(sections:at:) method
- ClientContext add .queryDatasource property
- SortedItemDataSource: helper data source to allow sorting of items from other data sources
- OCItemPolicy+Interactions: add context menu and swipe action support to remove policy
- remove unused UIImageView+Thumbnails.swift, mark others for removal

* - bump build number to 243

* - AccountController:
	- add support for showing/hiding account pill
	- add sharing items
	- add support for favorites support capability
- CollectionViewController:
	- separate usage of Wrapped IDs from hierarchic content
	- trigger data source updated when sections are hidden/shown
	- add setNeedsSourceUpdate() for more efficient updates
	- add workaround for UICollectionViewDiffableDataSource requesting cells from the wrong section when moved from there to another section
- CollectionViewSection: fix hideIfEmptyDataSource issue (previously did hide when not empty)
- ClientSharedWithMeViewController: new view controller to present pending, accepted and declined shares
- MoreViewHeader: add support for favorites support capability

* - OCShare+Interactions: add swipe + popup actions
- ClientSharedWithMeViewController: add title to list
- update SDK

* - NEW: UniversalItemListCell
	- provides a single cell implementation for two-line (title + detail) + thumbnail + accessories content
	- fine-grained encapsulation of content into UniversalItemListCell.Content objects for atomic, extensible content updates
	- fed through a content provider protocol (UniversalItemListCellContentProvider) that classes can adopt to asynchronously provide and update content via a completion handler
	- built-in accessory support for more, reveal, progress and messages
	- uses SegmentView for details line to allow rich/mixed content for different types
- UniversalItemListCellContentProvider implementation for OCItem, replacing ItemListCell
- UniversalItemListCellContentProvider implementation for OCShare
- InlineMessageCenter: make method names follow a single pattern
- ResourceItemIcon: add convenience method to return the best matching icon for a mime type
- SegmentView:
	- add new alpha property for items
	- various fixes (preventing unwanted animations and flickering due to tinting images + text, fix a retain loop)
- ThemeView: add missing call to didMoveToSuperview()

* - remove ItemListCell
- update KNOWN_ISSUES.md
- UnshareAction: add support for unsharing accepted "local" shares
- add missing localizations
- AccountConnection: inject shareJailQueryCustomizer into newly retrieved OCCore
- AccountController: no longer unfold Spaces by default
- ClientSharedByMeViewController: view controller to present shares shared to other users and links, including reveal and copy to clipboard
- fix navigation title UILabel becoming too large
- extend UniversalItemListCellContentProvider for OCShare with copy to clipboard, accept/decline and reveal accessories
- upgrade project to Xcode 14.2
- bump version to 245

* fastlane gym: changed workspace to project, because it no longer is using cocoapod

* - refactor and modularize URL scheme open URL handling code
- add handling for "owncloud://pb/" commands to allow control of OCClassSettingsFlatSourcePostBuild

* - include env var launch example for post-build.allowed-settings
- add error checking when clearing individual postbuild setting values

* - remove duplicate "Tap to relaunch." messages

* - Browser Navigation:
	- replaces UINavigationController and UISplitViewController
	- allows back/forward navigation and invoking the side bar
	- automatically switches between full width sidebar, side-by-side sidebar and sidebar-floating-on-top layouts depending on available width and content
- AppRootViewController: switch from UISplitViewController to BrowserNavigationViewController
- ClientContext: add additional property and push support for BrowserNavigationViewController
- EmbeddingViewController: add additional subclassing points for customization
- ClientLocationBarController: view controller displaying an OCLocation and allowing to jump to a parent location with a single tap
- ClientItemViewController: add bottom location bar if .location is set, using ClientLocationBarController
- SegmentView:
	- add support for scrolling
	- add support for limiting vertical usage
	- allow customization of "overflow" gradient color
	- add support for providing gesture recognizers for items
- ActionTapGestureRecognizer: subclass of UITapGestureRecognizer that allows providing a closure as action to perform
- UIView+EmbedAndLayout: embedHorizontally() gains limitHeight option that limits the height of the layout
- CollectionViewController: fill entire height with stack view, use a helper UIView to limit UICollectionView to safe area
- OCItem+Interactions: add revocations for view controllers pushed by reveal and open interactions
- UniversalItemListCell: work around _UITemporaryLayoutWidths auto-layout warning for accessory views
- Licensing
	- add OCLicenseQAProvider to allow enabling Pro Features for QA purposes
	- OCLicenseEMMProvider: fix provider ID
	- add toggle to "Advanced" settings allowing to unlock Pro Features for QA. Available only in beta builds.
- bump build number to 246

* Calens changelog updated

* - rename "Purchases" to "Purchases & Subscriptions" in Settings
- invoke AppStore.showManageSubscriptions() to allow direct subscription management where available, fallback to https://apps.apple.com/account/subscriptions

* - fix "Select All" not working in Multiselect
- adapt Multiselect to BrowserNavigationViewController

* - removal of legacy code

* - fix issue where OC10 accounts showed up empty in the File Provider

* - NavigationContent extension of UINavigationItem
- adapt SearchViewController, ClientItemViewController, ClientLocationPickerViewController and BrowserNavigationViewController to use NavigationContent instead of UINavigationItem directly
- fix background color and spacing for SearchViewController.scopeViewController to align with file list
- update KNOWN_ISSUES.md

* - bump build number to 247

* - address static analyzer findings
- address SwiftLint findings

* added new branding parameter von theme.json url

* - adapt to OCLocation.parent nullability change
- unify/fix navigation titles and context.drive for ClientItemViewController
- add new issue to KNOWN_ISSUES.md
- make OCLocation breadcrumb generation general-purpose, so it can be used not just by ClientLocationBarController but also f.ex. dropdowns
- BrowserNavigationItem: add .canTrimViewController property
- update SDK

* Fixes for Xcode 14 fastlane builds and resigning
Fastfile:
- needs setting manual code signing, because of signing swift package failures
Resign Script:
- seems like not all provisioning profiles contains SHA-1 values but SHA-256 values. Changed that for checking.

* - AppDelegate / SceneDelegate cleanup

* retrieving theme.json file and icon

* - removed unneeded code
- using new SDK

* - moved code from SDK into app framework
- using server url from core
- check, if branded json url exists and use logo image instead of avatar

* - BrowserNavigationBookmark
	- new class to capture location information that can then be used to restore/create a view controller
	- supports arbitrary OCDataItems
	- used of state restoration, sidebar selection
	- usable for browser navigation history compacting & view controller restore (tbd)
	- can be attached to view controllers via new UIViewController.navigationBookmark property
- BrowserNavigationBookmark+AccountController: provide ID bridge to side bar
- BrowserNavigationViewController: add support for a delegate (used to sync selection in sidebar)
- BrowserNavigationHistory: fix bug in .currentItem implementation
- BrowserNavigationItem: add .navigationBookmark property
- DataItemBrowserNavigationBookmarkReStore protocol
	- allows storing and restoring view controllers individually on a per-OCDataItem basis
	- implementation for OCItem, OCLocation and OCSavedSearch
- OCDrive: support for DataItemSelectionInteraction now uses OCLocation's implementation under the hood
- AppStateActions
	- new, extensible and universal mechanism for building complex UI scenes with dependencies
	- used for state saving, state restoration, scene building and more
	- actions for opening a connection, navigation to the personal folder or a BrowserNavigationBookmark - or revealing an OCItem
	- high-level conceptual overview in accompanying README.md
- ClientContext: new .scene property
- CollectionViewController: implemented recordSelection() and SelectionOperation, leaving it commented out for future (re)consideration
- CollectionViewAction:
	- new .highlight and .unhighlightAll actions
	- add support for "select first matching item" to .select and .highlight
- AccountConnectionPool: new .activeConnections property to return active connections
- AccountConnection: fix busyStatus handling bug
- OCSavedSearch: allow override of uuid (needed for sidebar navigation item selection/state restoration)
- URL+Extensions: refactor to allow opening links via app scheme (f.ex. https://demo.owncloud.org/f/27 via owncloud://demo.owncloud.org/f/27)
- DisplayHostViewController: no longer require OCQuery or OCDataSource - creating an "internal" one if needed
- update CONFIGURATION.json
- update KNOWN_ISSUES.md
- update ios-sdk
- bump build number
- remove ServerListTableViewController, ServerListTableHeaderView, OpenItemUserActivity and more source files that are no longer in use

* - allow more customization when generating breadcrumbs from OCLocation, make segment composition available globally
- complete implementation of "Available Offline" view
	- provide rich view of OCItemPolicys with path and icon
	- allow revealing items marked available offline in their respective location
- provide "no items" views for:
	- Available Offline
	- Favorites
	- all search-based Quick Access views (PDF Documents, Documents, Images, Videos, Audios)
- unify header views using a new ComposedMessageView category
- update KNOWN_ISSUES.md

* - Collection Views
	- add support for supplementary items via CollectionViewSupplementaryItem and CollectionViewSupplementaryCellProvider
	- implement TitleSupplementaryCell for section titles, including pinning support
	- implement ViewSupplementaryCell for arbitrary views, including pinning support
	- allow specifying CollectionViewSupplementaryItem on a per-section level
- ClientItemViewController: adopt CollectionViewSupplementaryItem with ViewSupplementaryCell to show SortBar as pinned section header
- ClientSharedByMeViewController, ClientSharedWithMeViewController, Available Offline and more: adopt headers based on supplementary cells, removing the need to use wrapping data sources in many places (efficiency win!)
- remove legacy search scope code from SortBar
- remove legacy Push Presentation Controller code
- fix miscellaneous warnings through small code changes

* - new class DataSourceCondition:
	- allows triggering actions based on item count of datasources
	- allows logical combinations of several conditions
- CollectionViewController: add .coverView property and support for filled, centered and top layout
- CollectionViewSection: adopt DataSourceCondition to implement .hideIfEmptyDataSource
- AccountControllerSpacesGridViewController: add "No spaces" message if no spaces are shared with user
- ClientSharedByMeViewController and ClientSharedWithMeViewController: add respective "no items" messages
- AppRootViewController: no longer scroll highlighted sidebar items into center
- ComposedMessageView: theme image views with tintColor

* - DisplaySettings: provide query condition(s) implementing display settings filters (new queryConditionForDisplaySettings property)
- AccountSearchScope, DriveSearchScope, ContainerSearchScope: use DisplaySettings.queryConditionForDisplaySettings to limit search results to those that should be visible
- CollectionViewController: fix crash bug when sections with supplementary views are hidden

* - AccountController: ensure Saved Search sidebar item is only visible if the account has saved searches
- CollectionViewController.WrappedItem: add readable description for improved debugging
- CollectionViewSection: fix a crash bug if an item is inserted into a child data source whose parent item is hidden or not (yet) in the collection view's data source

* - add support for authenticated WebFinger and retrieval of server instances via SDK update
- currently does not implement a picker for retrieved instances but always uses the first one returned by the server

* - bump version to 249

* - update SDK to implement enterprise#5579, including sending a Referer header when requesting the IdP configuration
- bump build number to 250

* - ClientItemViewController: ensure navigationItem.title is set by .navigationTitle for proper back button labeling in UINavigationControllers
- ClientLocationPicker: fix destination of view controller pushes - make sure they get pushed to the picker, not the parent context's browser controller

* - ContainerSearchScope: ensure the folder within which the scope starts is not included in the results itself

* - AppProvider: lang parameter fix via SDK update (ensure ISO-639-1 (uses only 2 characters) by cutting off any differentiators (f.ex. "en-GB" becomes "en"))

* - update SDK to possible address finding (38) in feature/new-navigation

* -  ClientLocationPickerViewController: fix vertical cancelButton constraint

* - OCShare+Interactions: make unshare action available via context menu and popup, use OCCore.delete() for unsharing

* - DisplayExtensionContext: subclass to allow passing the ClientContext to actions invoked from the more menu in DisplayViewController
- DisplayHostViewController: use DisplayExtensionContext and create a ClientContext child with a different originatingViewController
- DisplayViewController: clarify naming of method invoked when the more button is pressed in the viewer

* - enlarge "reveal" and "more" accessory buttons

* - bump build number to 252
- tag v12alpha1

* - fixed fastlane build error
- updated needed Xcode version for fastlane builds

* added a class setting key to set the default bookmark name when creating a new bookmark "bookmark.default-name"

* - introduce ThemeCSS and convert existing code base to use the new APIs
- progressed, but still work-in-progress

* - further CSS theming advances and cleanup

* - update SDK to include authenticated WebFinger fix
- BookmarkViewController: consistent spacing with tabs to improve code readability

* - remove unused customizedColorsByPath code

* - additional CSS fixes and refinements

* - further CSS color and code warning fixes

* - Settings now uses insetGrouped layout
- Action cards now use insetGrouped layout
- Spaces grid view updates depending on size class (animated!)
- StaticTableRow: CSS updates and fixes, including a retain loop that existed before
- fix appearance of group disclosure chevron in sidebar when item is selected

* - add ImportPasteboardAction as action for empty folders

* - fix action cell background appearance in dark mode

* - MakeTVG: update for latest Swift version
- add space.svg + space.tvg
- display "Files" (for OC10) or name of space for root folder(s) and show appropriate icon

* - SDK update: fix connection validation in case WebFinger lookup is not present
- fix more CSS styling issues

* - add "more" button to spaces in spaces grid view
- fix "Access Denied" warning icon color in sidebar
- limit Paste action to writeable locations
- CollectionViewSection: add missing ClientContext in CollectionViewCellConfiguration

* - add new SharedKeyCommands to ownCloudAppShared.framework, to implement key commands that should be available in app and extensions
- move PasscodeViewController key commands over to SharedKeyCommands

* - bump build number to 253

* - address #1188 via SDK update
- show space names and icons if a space's root folder is made available offline or shared, in the respective views
- remove separator background color in available offline view
- bump build number to 254

* - AccountControllerSpacesGridViewController: fix warning
- ThemeCSS: cleanup, provide documentation in README.md

* - Branding+App: add missing copyright notice
- add CSS support to branding
- complete first revision of CSS documentation, including an example for CSS branding

* - ThemeCSS README: add missing language MD annotation

* - OCResourceText+ViewProvider: fix Theme registration timing to work with CSS themeing

* - CSS README.md: correct title levels

* - ClientLocationPickerViewController:
	- fix color errors for account cells
	- add additional separator line on top for more visual clarity
	- use grouped collection background color for navigation bar
- ThemeCollection: minor code cleanup

* - fix finding (37) in #1162
- ImageDisplayViewController: fix new warning in Xcode 14.3

* - ItemLayout:
	- new enum as high-level abstraction for item layout
	- provides layout objects and values
- ClientContext: add new itemLayout property
- SortBar: add new layout-toggling button, clean up delegate methods
- ClientItemViewController:
	- add support for grid views, ItemLayout, SortBar and ClientContext advances
	- move footer view to a separate section to avoid layout interference, simplify the code and provide better performance
- CollectionViewSection:
	- cleanup code
	- add support for changing cell layout and style in one go, without animation
- UniversalItemListCell: add support for grid layout
- ViewSupplementaryCell:
	- prepare to support different ElementKinds (f.ex. footers, etc.)
	- fix zIndex to make the cell float above separators as well

* - SegmentViewItem: add concept of lines to allow realizing different layouts from a single array of items
- OCItem+UniversalItemListCellContentProvider: tag detail segment item .lines
- UniversalItemListCell: use SegmentViewItem.lines tagging to switch between single line and two lines details
- SegmentView: preparations to dynamically apply a gradient mask when views exceed the boundaries

* - NamingViewController:
	- select file names without extension when editing names
	- support picking a "fallback" icon
- CreateDocumentAction: show fallback icon based on mimeType of created document type

* - demo for using combined data sources and composed message views

* - ThemeCSS demo

* - onboarding view
- move branding setup into BookmarkViewController

* removed default value

* - BrowserNavigationHistory: guard instance variables items and position in a thread-safe way
- BrowserNavigationItem: add viewControllerIfLoaded property to allow retrieving a view controller only if it exists and without triggering its (re)creation
- ClientSidebarViewController: ensure removal of /all/ history items for a view controller when it is revoked
- UIViewController+NavigationRevocation: add debug logging, respect the passed revocationTriggers

* - optimize grid cell margin usage

* - ClientItemViewController: make SortBar.itemLayout match ClientContext.itemLayout

* - Spaces grid overview: make more (…) button resist compression, fixing layout issue with long space titles that don't fit horizontally

* - ClientItemViewController:
	- skip driveSection creation if not necessary
	- show quota for personal space

* - add selection checkmark for multi selection in grid view

* - bump build number to 255

* - ThemeCSS: implement match-cache for massive speedup

* - ClientItemViewController: show "Loading…" when the contents of a folder is still being loaded

* - CSS: remove Fill from .fill colors for TVG vector images
- CSS README: add section for vector icon color CSS selectors

* - cosmetic code changes

* - UniversalItemListCell: add titleAndDetailsHeight() method to allow determining space needed for details and title
- CollectionViewSection.CellLayout: add new .fillingGrid layout that dynamically adjusts cell size to achieve best size / space fit + center cells
- ItemLayout: adopt CellLayout.fillingGrid
- AccountControllerSpacesGridView: adopt CellLayout.fillingGrid
- bump build number ot 256

* - update KNOWN_ISSUES.md

* - fix indenting

* - fix indenting

* - fix indenting

* - fix indenting

* added corners to uiimage

* - Action: clarify types to fix warnings
- Action+UserInterface: remove legacy sharing code
- BottomButtonBar: make code for bottom button bar with text re-usable (extracted from ClientLocationPickerViewController)
- CollectionItemViewController: remove unused searchController ivar
- ClientLocationPickerViewController: adopt BottomButtonBar
- CollaborateAction: switch to invoking SharingViewController and make it widely available
- ComposedMessageView: add withRoundedBackgroundView option to .infoBox()
- DocumentActionViewController: remove distinction between links and user/group share actions, consolidate into one action and moving to SharingViewController
- NavigationContent: make initializer publicly available
- OCCore+Extension: remove replaced legacy code
- OCIdentity+UniversalItemListCellContentProvider: implement UniversalItemListCellContentProvider for OCIdentity
- OCItem+Extension: make date formatters usable from other code
- OCShare+Interactions: add support for selection, invoking the new ShareViewController or SharingViewController to allow editing support
- OCShare+UniversalItemListCellContentProvider: add support for different views
- OCShareRole+UniversalItemListCellContentProvider: implement UniversalItemListCellContentProvider for OCShareRole
- OptionGroup + OptionItem: helper classes to easily implement "static" UI controls inside a CollectionViewController
- RecipientSearchScope: SearchScope subclass for searching recipients using OCRecipientSearchController()
- SearchElement: convince property .composedSearchTerm for simple concatenation of search element strings
- SearchScope: add convenience accessor for recipient search
- SegmentView: refine truncation mode support and layout
- SegmentViewItem + SegmentViewItemView: add lineBreakMode and UIView-embedding support
- ShareViewController: new class to create, view and edit individual OCShares
- SharingViewController: new class to manage user/group and link shares of an item
- TitleSupplementaryCell: add additional title supplementary cells for medium and small sized titles
- UICellAccessory+Extension: convenience methods to create accessories with buttons
- UIImage+ViewProvider: implement OCViewProvider support for UIImage
- UniversalItemListCell:
	- add .icon(image:) as Icon type to allow providing UIImages directly
	- add additional cellStyle support for .header and .tableLine
- remove replaced legacy code: GroupSharingTableViewController, GroupSharingEditTableViewController, PublicLinkTableViewController, PublicLinkEditTableViewController, LinksAction

* - File Provider UI:
	- add AppComponent ID to Infop.list
	- DocumentActionViewController:
		- use theme depending on user setting
		- fix missing icons issue

- ownCloudAppShared + OCItem:
	- move OCItem status icons into ownCloudAppShared.framework, make them easily accessible via OCItem category
	- adapt code to use OCItem.*Icon

* - bump build number to 257

* - Saved Searches: add support for saving folder-scoped searches

* CR findings fixed

* - CollectionViewSection: fix layout issue when switching between layouts by changing order of operations
- CollectionViewCellStyle: add two new grid styles: low detail and no detail and a convenience accessor for determining if a style is a grid layout
- ItemLayout:
	- add two new grid layouts: low detail (with only name label) and no detail (with only thumbnail)
	- provide a minimum/maximum range for thumbnails in grid layouts to better fill screen of larger iPhones
	- add method to provide description + icon for every layout
- SortBar: add a picker to switch between the (now) four available layouts
- UniversalItemListCell: implement two additional grid cell layouts/styles

* - add localization for the four item layouts

* - ClientItemViewController: show "No actions available" when tapping the "+" button in the navigation bar for a folder without the necessary permissions

* - ActionContext: provide convenience accessor for .rootItem
- CollaborateAction: only display if item is actually shareable
- CutAction: only display if items are moveable
- DuplicateAction: use the proper rootItem for the permission check
- FavoriteAction/UnfavoriteAction: only show when favorites are supported on the server
- ImportPasteboardAction: use the proper rootItem for the permission check
- fix preliminary permission checks for various actions

* - ClientItemViewController: add pull to refresh support for OCQuery-based content

* - ShareViewController: disallow clicks on OCShare links when editing them, fixing finding (1) in #1198

* - SDK update: return a descriptive error when a share create/modify/delete request fails due to a missing internet connection
- NavigationRevocationEvent: add new .connectionStateEntered() and .connectionStateLeft() events
- AccountConnection: emit .connectionStateEntered() and .connectionStateLeft() events
- UIViewController+NavigationRevocation: offer simplified .connectionOffline trigger for change events for connecting, unavailable, offline connection states
- BottomButtonBar: add support for disabling buttons and showing an activity indicator
- SharingViewController: adopt .connectionClosed + .connectionOffline triggers to dismiss view controller when internet connection drops
- ShareViewController:
	- adopt .connectionClosed + .connectionOffline triggers to dismiss view controller when internet connection drops
	- provide status feedback via new BottomButtonBar functionality
- ClientSharedByMeViewController + ClientSharedWithMeViewController: show message when Internet connection drops, indicating that Sharing requires an internet connection
- ClientSidebarViewController: add revocation support for presented view controllers, including "deeply" presented view controllers

* - OCQueryCondition+SearchSegmenter: make "owner:" equate rather than start with ownerUserName

* migrated branded ownboarding into regular account setup

* fixed issue, when adding account is not allowed and changed button title

* removed no longer needed branded login files

* re-added documentation metadata for moved class settings

* fixed removed key

* updated to latest SDK commit

* - removed rounded corner from onboarding icons
- added title

* set Xcode version to 14.1 for Mac mini builds

* - OCShare+UniversalItemListCellContentProvider: update for OCItem-less implementation
- ShareViewController:
	- update for OCItem-less implementation
	- fix role preselection (was missing)
- SharingViewController: use an OCShareQuery instead of the global sharedByMe and sharedByLink data sources due to https://github.com/owncloud/ocis/issues/5355

* - fix issue where an authentication error isn't displayed but instead the account remains "Offline" forever
- change wording from "internet connection" to "active connection" for sharing

* - SharingViewController: add refresh interval for OCShareQuery to reflect changes

* - OCShare+Interactions: reveal accepted .sharedWithMe items when clicked
- OCShare+UniversalItemListCellContentProvider: add reveal button for accepted .sharedWithMe items

* - fix finding (42) in #1162

* - OCShare+Interactions: replace icon "checkmark" with "checkmark.circle" to avoid ambiguity with selection in context menus
- OCShare+UniversalItemListCellContentProvider: replace distinct "Accept" and "Decline" accessory buttons with single "..." accessory popup button for trait collection size compact
- ThemeCollection: add CSS for .accessory.action
- UICellAccessory+Extension: add menu parameter to easily build button accessories showing the menu as primary action

* - Sharing: add "Invited persons" role for drive-based servers

* fixed CR findings

* - update and clean up KNOWN_ISSUES.md
- fix finding (1) in #1205, log a message when reloading a non-visible/non-existing section is attempted

* - fix SwiftLint warnings / indentation

* - fix ThemeCSSLabel textColor not always set correctly on initial color application

* - Branding+App: added .welcome CSS selector
- AppRootViewController: add css selectors to welcome message
- ThemeCollection: add CSS records for .welcome screen

* - add test env vars

* - remove unrelated changes from auto-formatting

* - project: add branch, tags and build date to Info.plist
- update KNOWN_ISSUES
- bump build number to 259
- add GitInfo class to provide git + build information for app and SDK, remove LastGitCommit() function, adapt code using LastGitCommit() to use GitInfo instead
- UnshareAction: do not appear for drive root folders
- MoreSettingsSection: use GitInfo for both app and SDK to provide more verbose version info, add build date

* - BookmarkViewController: avoid premature deallocation of connection instance

* - bump build number to 260

* - GitInfo: show verbose version info only if not on main branch or beta warning is active

* - OCShare+UniversalItemListCellContentProvider and OCShare+Interactions: adapt to also handle federated shares
- ComposedMessageView: use a standard 100 x 100 frame to avoid initial auto layout issue + messages
- OCItemTracker: add personal drive ID to legacy root locations for drive-based accounts

* - OCQueryCondition+SearchSegmenter: pull localization from correct bundle (fixes #1211)

* - add missing translations (#1201, #1184)

* - fix localization issue documented in #1201

* - add missing localizations and translations for Sharing

* - update SDK: WebFinger now respects `connection.allowed-authentication-methods`: if a list is provided and OIDC is not part of it, WebFinger is skipped

* - generate_docs.sh: update to respect CocoaPods removal, update project and destination for testing to latest Xcode

* Update configuration-documentation.yml

- GitHub workflow: update configuration-documentation.yml to no longer include CocoaPods installation and use Xcode 14.3

* configuration-documentation.yml: skip Xcode version selection

* Configuration documentation updated

* - AccountController+ExtraItems: remove duplicate code
- fix diagnostic navigation, make Diagnostic views use ClientContext where necessary

* - bump build number to 261

* - update SDK for OCBookmark item versioning and OCBookmarkManager data source improvements
- AccountConnection: fix indentation
- ownCloudAppFramework: add PocketSVG
- OCImage+ViewProvider: add view provider support for SVG images

* changed required Xcode version

* - fix dynamic linker (dyld) crash by adding PocketSVG as framework to the main app

* - ThemeButton: respect CSS colors for fill/stroke and different states by using new UIButton.Configuration API

* - ReleaseNotesHostViewController: update CSS selectors
- ThemeButton: add convenience initializer for better passing both css selectors and a button configuration

* - adapt usage of ThemeButton to changes

* - Branding+App: add `auto` option for `branding.url-theme-json`, which constructs the `branding.json` URL from the respective server's URL
- add debug scheme option to simplify testing with `branding.url-theme-json=auto`

* - update SDK to gain ETag-tracking of URL-based, remote resources
- OCItemTracker:resolve warning

* - ThemeButton:
	- set default configuration when initializing by decoding
	- add support for corner radius to updateConfiguration()
- fixes Passcode view controller buttons not being styled correctly

* - fixed welcome css selectors
- added a new composed message view element imageButton and added the image parameter to the button element

* - fix indentation in various source files
- modify ThemeButton to handle .buttonFont differently, now via UIButton.Configuration and without default value
- fix wrong font being used for ThemeButtons in PasscodeViewController

* - ActionCell: allow passing custom CSS selectors for the cell via `OCAction.cssSelectors`

* first draft for adding a help section in the sidebar

* added branded help section to sidebar

* - OCDataItem+InteractionProtocols/DataItemSelectionInteraction:
	- add new performItemDeselection parameter to completion block that forces deselection of the item upon completion
	- adapt implementations of protocol accordingly
- OCAction: add new property OCAction.automaticDeselection that automatically deselects an OCAction cell after selection

* - ClientSidebarViewController:
	- add action.automaticDeselection to help action
	- fix SwiftLint warnings

* Added new sidebar-links branding values, which computes a dynamic link section in the sidebar (can have multiple values)

* Configuration documentation updated

* set symbol to optional and added an optional struct string image to use an image name, which must be added to the app bundle

* - remove accidentally added override in Branding.isBranded
- normalize indentation

* - add project-wide tab setting defaults

* CR finding: fixed branding parameter help description

* - added a placeholder image for the sidebar link icon
- removed templating the sidebar link icon

* - CreateDocumentAction: open newly created documents in the first available web app by default, make modes (create, create-and-open) configurable via class settings
- ScanViewController: fix wrong API usage for progressHUDViewController
- ClientWebAppViewController: add doneHandler to be called when the view controller is dismissed
- OpenInWebAppAction: schedule refresh of parent item folder when returning from web app
- UniversalItemListCell: fix icon updates flickering
- ProgressHUDViewController: add safeguard against double-dismissals

* - CollectionViewController:
	- avoid zero-sized ThemeCSSView
	- use auto-layout for collection view in non-stackview layouts, too
- AccountControllerCell:
	- fix conflicting constraints
	- improve positioning of title and detail labels

* - CollectionViewController: double-check that CollectionViewSections from a datasource are associated with the respective CollectionViewController
- CollectionViewSection: detect initial encounters with OCDataSourceSubscription and use .items instead of .addedItems in that case
- ClientSidebarViewController: mitigate (2) in #1095 by manually triggering a refresh of the root data source if the criteria are met

* - CollectionViewSection: dial back subscription update handling change, as it led to duplicates and a crash

* - bump build number to 265

* - VendorServices: set isBetaBuild and showBetaWarning to false

* - ReleaseNotes.plist:
	- remove no longer used "ImageData" key
	- add release notes for version 12.0

* Configuration documentation updated

* - PasscodeController:
	- clean up layout
	- remove image view over biometrical button
	- use image on biometrical button directly
- improve language in ReleaseNotes.plist

* - bump build number to 266

* - fix finding (3) in #1095

* - fix finding (4) in #1095

* - fix finding (6) in #1095

* - fix finding (13) in #1095

* - fix finding (8) in #1095

* - fix finding (10) in #1095

* - FileProviderExtension: fix accidental passing of OCVFSNode instead of OCItem as parentItem to -reportLocalModificationOfItem: via -itemChangedAtURL:; log error message if item or parentItem OCItem instances can't be found
- fixes finding (11) in #1095

* - add missing ios-sdk commit update
- fixes finding (11) in #1095

* - fix finding (15) in #1095

* added version 12.0 release notes

* set current build number

* added callens changelog files

* changed callens folder name

* Calens changelog updated

---------

Co-authored-by: Matthias Hühne <>
Co-authored-by: felix-schwarz <[email protected]>
Co-authored-by: Matthias Hühne <[email protected]>
Co-authored-by: hosy <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Approved by QA Approved by QA
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants