Skip to content

Commit d590f07

Browse files
marinofaggiananextcloud-botmpivchevi2h3zero0cool0
authored
Version 6.5.0 (#3377)
* Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * https://github.com/nextcloud/ios/pull/3269/files Signed-off-by: Marino Faggiana <[email protected]> * cell fixed Signed-off-by: Marino Faggiana <[email protected]> * fix section Signed-off-by: Marino Faggiana <[email protected]> * color Signed-off-by: Marino Faggiana <[email protected]> * clean Signed-off-by: Marino Faggiana <[email protected]> * cod Signed-off-by: Marino Faggiana <[email protected]> * cod Signed-off-by: Marino Faggiana <[email protected]> * cod Signed-off-by: Marino Faggiana <[email protected]> * downloadPreview Signed-off-by: Marino Faggiana <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * New version Signed-off-by: Marino Faggiana <[email protected]> * Fix login poll timer not cancelling Signed-off-by: Milen Pivchev <[email protected]> * E2EE force refresh after create dir Signed-off-by: Marino Faggiana <[email protected]> * version 6.2.3 Signed-off-by: Marino Faggiana <[email protected]> * Additional checks for timer Signed-off-by: Milen Pivchev <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * menu FIX Signed-off-by: Marino Faggiana <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * Recommended review NC 31 (#3275) Signed-off-by: Marino Faggiana <[email protected]> * Version 6.2.4 Signed-off-by: Marino Faggiana <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * fix error Signed-off-by: Marino Faggiana <[email protected]> * fix appearanceInterfaceStyle Signed-off-by: Marino Faggiana <[email protected]> * build 1 Signed-off-by: Marino Faggiana <[email protected]> * added new dictionary Signed-off-by: Marino Faggiana <[email protected]> * fix timer Signed-off-by: Marino Faggiana <[email protected]> * Max request/download/upload concurrent parameter (#3276) Signed-off-by: Marino Faggiana <[email protected]> * improvements (#3277) Signed-off-by: Marino Faggiana <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * fix and new build Signed-off-by: Marino Faggiana <[email protected]> * fix high header Recommendations Signed-off-by: Marino Faggiana <[email protected]> * Build 3 Signed-off-by: Marino Faggiana <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * Small string changes Signed-off-by: Milen Pivchev <[email protected]> * remove unused strings Signed-off-by: Milen Pivchev <[email protected]> * more Signed-off-by: Milen Pivchev <[email protected]> * remove more strings Signed-off-by: Milen Pivchev <[email protected]> * Enabled Greek localization. Signed-off-by: Iva Horn <[email protected]> * more strings Signed-off-by: Milen Pivchev <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * New headers, menu, buttons in navigation controller, transfers (#3281) Signed-off-by: Marino Faggiana <[email protected]> * new build Signed-off-by: Marino Faggiana <[email protected]> * set directoryOnTop for account Signed-off-by: Marino Faggiana <[email protected]> * set Title Signed-off-by: Marino Faggiana <[email protected]> * transfersButton Color Signed-off-by: Marino Faggiana <[email protected]> * Improvements menu (#3284) Signed-off-by: Marino Faggiana <[email protected]> * close button Signed-off-by: Marino Faggiana <[email protected]> * build 5 Signed-off-by: Marino Faggiana <[email protected]> * hide button rigth (#3287) Signed-off-by: Marino Faggiana <[email protected]> * new build Signed-off-by: Marino Faggiana <[email protected]> * Fix Predicate for PersonalFilesOnly Signed-off-by: Marino Faggiana <[email protected]> * cleaning Signed-off-by: Marino Faggiana <[email protected]> * New build Signed-off-by: Marino Faggiana <[email protected]> * #3169 fix ssl client certificate (#3223) * fix: set NCLogin as NCNetworking certificate delegate Signed-off-by: Patrick Fischer <[email protected]> * fix: ensure UIAlertControllers are presented on main thread Signed-off-by: Patrick Fischer <[email protected]> * fix: cancel authentication challenge instead of default action Signed-off-by: Patrick Fischer <[email protected]> --------- Signed-off-by: Patrick Fischer <[email protected]> * Fix string Signed-off-by: Milen Pivchev <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * NextcloudKit Swift 6 - new version Signed-off-by: Marino Faggiana <[email protected]> * Fix Signed-off-by: Milen Pivchev <[email protected]> Fix 2 Signed-off-by: Milen Pivchev <[email protected]> Fix 3 Signed-off-by: Milen Pivchev <[email protected]> * fix @objc Signed-off-by: Marino Faggiana <[email protected]> * Fix singleton Signed-off-by: Milen Pivchev <[email protected]> * fix errorDescription Signed-off-by: Marino Faggiana <[email protected]> * fix Swift6 - warning Signed-off-by: Marino Faggiana <[email protected]> * Improved code (Swift 6 NextcloudKit) Signed-off-by: Marino Faggiana <[email protected]> * Move some class to Sendable Signed-off-by: Marino Faggiana <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * coding Signed-off-by: Marino Faggiana <[email protected]> * Sendable Signed-off-by: Marino Faggiana <[email protected]> * interceptor Signed-off-by: Marino Faggiana <[email protected]> * detect 401 Signed-off-by: Marino Faggiana <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * Unauthorized (DISABLED) Signed-off-by: Marino Faggiana <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * code improvements Signed-off-by: Marino Faggiana <[email protected]> * improved code Signed-off-by: Marino Faggiana <[email protected]> * checkremoreuser Signed-off-by: Marino Faggiana <[email protected]> * improved code Signed-off-by: Marino Faggiana <[email protected]> * improved code Signed-off-by: Marino Faggiana <[email protected]> * improved code Signed-off-by: Marino Faggiana <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * cleaning old code Signed-off-by: Marino Faggiana <[email protected]> * metadata-photos-original_date_time Signed-off-by: Marino Faggiana <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * Code improved Signed-off-by: Marino Faggiana <[email protected]> * databaseSchemaVersion Signed-off-by: Marino Faggiana <[email protected]> * Copyright © 2025 Nextcloud. All rights reserved. Signed-off-by: Marino Faggiana <[email protected]> * setupLog Signed-off-by: Marino Faggiana <[email protected]> * update build Signed-off-by: Marino Faggiana <[email protected]> * improved swipe Signed-off-by: Marino Faggiana <[email protected]> * Build 2 Signed-off-by: Marino Faggiana <[email protected]> * improved code Signed-off-by: Marino Faggiana <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * update advanced settings log Signed-off-by: Marino Faggiana <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * fix upload foto subfolder (#3302) * code fixed Signed-off-by: Marino Faggiana <[email protected]> * cleaning Signed-off-by: Marino Faggiana <[email protected]> --------- Signed-off-by: Marino Faggiana <[email protected]> * Build 3 Signed-off-by: Marino Faggiana <[email protected]> * Login v2 internal browser + fix provider log in (#3303) * Add option to log out of login v2 flow Signed-off-by: Milen Pivchev <[email protected]> * WIP Signed-off-by: Milen Pivchev <[email protected]> * Finish Signed-off-by: Milen Pivchev <[email protected]> --------- Signed-off-by: Milen Pivchev <[email protected]> * Build 4 Signed-off-by: Marino Faggiana <[email protected]> * varie (#3304) * upload photo offline Signed-off-by: Marino Faggiana <[email protected]> * code improvements Signed-off-by: Marino Faggiana <[email protected]> --------- Signed-off-by: Marino Faggiana <[email protected]> * Auto upload from specific Albums (#3257) * WIP Signed-off-by: Milen Pivchev <[email protected]> * WIP Signed-off-by: Milen Pivchev <[email protected]> * WIP Signed-off-by: Milen Pivchev <[email protected]> * WIP Signed-off-by: Milen Pivchev <[email protected]> * WIP Signed-off-by: Milen Pivchev <[email protected]> * WIP Signed-off-by: Milen Pivchev <[email protected]> * WIP Signed-off-by: Milen Pivchev <[email protected]> * WIP Signed-off-by: Milen Pivchev <[email protected]> * WIP Signed-off-by: Milen Pivchev <[email protected]> * WIP Signed-off-by: Milen Pivchev <[email protected]> * WIP Signed-off-by: Milen Pivchev <[email protected]> * Fix build Signed-off-by: Milen Pivchev <[email protected]> * WIP Signed-off-by: Milen Pivchev <[email protected]> * WIP Signed-off-by: Milen Pivchev <[email protected]> * Fix stateobject redrawing Signed-off-by: Milen Pivchev <[email protected]> * WIP Signed-off-by: Milen Pivchev <[email protected]> * WIP Signed-off-by: Milen Pivchev <[email protected]> * Finish Signed-off-by: Milen Pivchev <[email protected]> * Apply suggestions from code review Co-authored-by: Iva Horn <[email protected]> Signed-off-by: Milen Pivchev <[email protected]> * PR reviews Signed-off-by: Milen Pivchev <[email protected]> * PR suggestions Signed-off-by: Milen Pivchev <[email protected]> * PR fixes Signed-off-by: Milen Pivchev <[email protected]> * PR fixes Signed-off-by: Milen Pivchev <[email protected]> * Apply suggestions from code review Co-authored-by: Iva Horn <[email protected]> Signed-off-by: Milen Pivchev <[email protected]> * Pr changes Signed-off-by: Milen Pivchev <[email protected]> * Fix compile Signed-off-by: Milen Pivchev <[email protected]> * Fix compile Signed-off-by: Milen Pivchev <[email protected]> * Refactor Signed-off-by: Milen Pivchev <[email protected]> --------- Signed-off-by: Milen Pivchev <[email protected]> Co-authored-by: Iva Horn <[email protected]> * Fix destination not disabling on auto upload on Signed-off-by: Milen Pivchev <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * Fix NavigationController (#3305) * fix Signed-off-by: Marino Faggiana <[email protected]> * fix Signed-off-by: Marino Faggiana <[email protected]> * build 6 Signed-off-by: Marino Faggiana <[email protected]> --------- Signed-off-by: Marino Faggiana <[email protected]> * fix delete Signed-off-by: Marino Faggiana <[email protected]> * fix color album selected Signed-off-by: Marino Faggiana <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * remove some old warning Signed-off-by: Marino Faggiana <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * pushNotification code improved (#3308) * cod Signed-off-by: Marino Faggiana <[email protected]> * cod Signed-off-by: Marino Faggiana <[email protected]> * cod Signed-off-by: Marino Faggiana <[email protected]> * cod Signed-off-by: Marino Faggiana <[email protected]> * cod Signed-off-by: Marino Faggiana <[email protected]> * cleaning Signed-off-by: Marino Faggiana <[email protected]> * cod Signed-off-by: Marino Faggiana <[email protected]> * push server Signed-off-by: Marino Faggiana <[email protected]> --------- Signed-off-by: Marino Faggiana <[email protected]> * cleaning (push notification) Signed-off-by: Marino Faggiana <[email protected]> * fix (#3309) Signed-off-by: Marino Faggiana <[email protected]> * nc:metadata-photos-original_date_time Signed-off-by: Marino Faggiana <[email protected]> * build 7 Signed-off-by: Marino Faggiana <[email protected]> * fix completion(newAssets) Signed-off-by: Marino Faggiana <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * rollback (#3310) Signed-off-by: Marino Faggiana <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * New build Signed-off-by: Marino Faggiana <[email protected]> * change Media to datePhotosOriginal Signed-off-by: Marino Faggiana <[email protected]> * Update c 2025 Signed-off-by: Marino Faggiana <[email protected]> * Media improvements Signed-off-by: Marino Faggiana <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * Download Limits Including UI Tests Sharing UI Improvements: - Improved code organization to improve clarity in the sharing user interface. - Added NCShareDownloadLimitTableViewControllerDelegate to enable the table view to update the share user interface as the data model owner. - Added a proper primary key to tableDownloadLimit composed of the account identifier and the share token. - Added accessibility identifiers to various user interface controls to enable the UI test automation. - Carved out some types and renamed them to have more descriptive names. Tests: - Disabled test parallelization to prevent Xcode from freezing. - Updated GitHub actions for UI tests. - Removed xcbeautify from tests action because it will truncate critical error information in GitHub actions. Review Amendments: - The remarks of Marino on a previous and meanwhile completely reverted implementation have been taken into account. - Added namespacing of download limits by account identifiers. - Removed unnecessary throws. - Removed redundant property attributes. Signed-off-by: Iva Horn <[email protected]> * Second Review Amendments - Updated README. - Added convenience script to launch test server. - Added removal of all accounts on launch when UI_TESTING argument is detected. - Removed redundant code. This might be a rebase accident. - Removed obsolete shell scripts for test servers. - Consolidated XCUIElement extensions into dedicated source code group a single file. Signed-off-by: Iva Horn <[email protected]> * Disabled test job in GitHub actions. Due to the lack of effective tests besides Xcode UI tests which are unfeasible without bare metal runners. Signed-off-by: Iva Horn <[email protected]> * Create live photo from two files (image+video) selected (#3317) Signed-off-by: Marino Faggiana <[email protected]> * Build 9 Signed-off-by: Marino Faggiana <[email protected]> * cleaning Signed-off-by: Marino Faggiana <[email protected]> * Fix #3248: Remove unnecessary _remaining_share_downloads_ (#3319) Signed-off-by: Iva Horn <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * fix Signed-off-by: Marino Faggiana <[email protected]> * fix (#3322) Signed-off-by: Marino Faggiana <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * use correct user agent during login (#3325) Signed-off-by: Serhii Kaliberda <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * Build 10 Signed-off-by: Marino Faggiana <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * serious-error-db (#3323) * fix Signed-off-by: Marino Faggiana <[email protected]> * fix Signed-off-by: Marino Faggiana <[email protected]> * cleaning Signed-off-by: Marino Faggiana <[email protected]> * export tableAccount in json Signed-off-by: Marino Faggiana <[email protected]> * cod Signed-off-by: Marino Faggiana <[email protected]> * improved code Signed-off-by: Marino Faggiana <[email protected]> * cleaning Signed-off-by: Marino Faggiana <[email protected]> * cleaning code Signed-off-by: Marino Faggiana <[email protected]> * Update iOSClient/Data/NCManageDatabase+Account.swift Co-authored-by: Iva Horn <[email protected]> Signed-off-by: Marino Faggiana <[email protected]> * Update iOSClient/SceneDelegate.swift Co-authored-by: Iva Horn <[email protected]> Signed-off-by: Marino Faggiana <[email protected]> * Update iOSClient/Data/NCManageDatabase.swift Co-authored-by: Iva Horn <[email protected]> Signed-off-by: Marino Faggiana <[email protected]> * Update iOSClient/Data/NCManageDatabase.swift Co-authored-by: Iva Horn <[email protected]> Signed-off-by: Marino Faggiana <[email protected]> * cleaning Signed-off-by: Marino Faggiana <[email protected]> * fix nk version for test Signed-off-by: Marino Faggiana <[email protected]> * Add more logs Signed-off-by: Milen Pivchev <[email protected]> * Add more logs Signed-off-by: Milen Pivchev <[email protected]> * new schema version Signed-off-by: Marino Faggiana <[email protected]> --------- Signed-off-by: Marino Faggiana <[email protected]> Signed-off-by: Milen Pivchev <[email protected]> Co-authored-by: Iva Horn <[email protected]> Co-authored-by: Milen Pivchev <[email protected]> * ToS Improvements (#3334) * cod Signed-off-by: Marino Faggiana <[email protected]> * fix: flip lat/lon from exif to negative when needed Signed-off-by: Marino Faggiana <[email protected]> --------- Signed-off-by: Marino Faggiana <[email protected]> * cleaning Signed-off-by: Marino Faggiana <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * Build 11 - closed Signed-off-by: Marino Faggiana <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * fix order Media Signed-off-by: Marino Faggiana <[email protected]> * Version 6.3.1 Signed-off-by: Marino Faggiana <[email protected]> * cleaning old func not used Signed-off-by: Marino Faggiana <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * Version 6.4.0 Signed-off-by: Marino Faggiana <[email protected]> * Improved Auto Upload creation dir/subdir (#3337) * cod Signed-off-by: Marino Faggiana <[email protected]> * improved Signed-off-by: Marino Faggiana <[email protected]> * cleaning Signed-off-by: Marino Faggiana <[email protected]> * cleaning Signed-off-by: Marino Faggiana <[email protected]> * cleaning Signed-off-by: Marino Faggiana <[email protected]> * cleaning Signed-off-by: Marino Faggiana <[email protected]> * add selector Signed-off-by: Marino Faggiana <[email protected]> * cod Signed-off-by: Marino Faggiana <[email protected]> * cod Signed-off-by: Marino Faggiana <[email protected]> * cleaning Signed-off-by: Marino Faggiana <[email protected]> * improved Signed-off-by: Marino Faggiana <[email protected]> * cod Signed-off-by: Marino Faggiana <[email protected]> * improved Signed-off-by: Marino Faggiana <[email protected]> * cleaning Signed-off-by: Marino Faggiana <[email protected]> * cleaning Signed-off-by: Marino Faggiana <[email protected]> * cleaning Signed-off-by: Marino Faggiana <[email protected]> * cleaning Signed-off-by: Marino Faggiana <[email protected]> * add selector Signed-off-by: Marino Faggiana <[email protected]> * cod Signed-off-by: Marino Faggiana <[email protected]> * cod Signed-off-by: Marino Faggiana <[email protected]> * cleaning Signed-off-by: Marino Faggiana <[email protected]> * improved Signed-off-by: Marino Faggiana <[email protected]> * cleaning Signed-off-by: Marino Faggiana <[email protected]> * improvements Signed-off-by: Marino Faggiana <[email protected]> --------- Signed-off-by: Marino Faggiana <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * code improvements (#3338) Signed-off-by: Marino Faggiana <[email protected]> * fix (#3339) Signed-off-by: Marino Faggiana <[email protected]> * new build Signed-off-by: Marino Faggiana <[email protected]> * WIP (#3336) Signed-off-by: Milen Pivchev <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * Fix #3248: Pluralized string. - Introduced Localizable.stringsdict for pluralization. - Restored _remaining_share_downloads_ string. - Extended Transifex configuration to include ios-plurals resource. - Added .tx directory to Xcode project for convenient access to edit. Signed-off-by: Iva Horn <[email protected]> * #3248: Removed zero case from English plural location. Transifex does not allow it. Signed-off-by: Iva Horn <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * Add back missing strings Signed-off-by: Milen Pivchev <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * Restore missing strings Signed-off-by: Milen Pivchev <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * fix Signed-off-by: Marino Faggiana <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * fix crash Signed-off-by: Marino Faggiana <[email protected]> * cleaning Signed-off-by: Marino Faggiana <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * Widget dashboard and file widgets continue to display file lists after logout (#3344) * fix Signed-off-by: Marino Faggiana <[email protected]> * cleaning Signed-off-by: Marino Faggiana <[email protected]> --------- Signed-off-by: Marino Faggiana <[email protected]> Co-authored-by: Marino Faggiana <[email protected]> * Networking Process (#3345) * fix Signed-off-by: Marino Faggiana <[email protected]> * cleaning Signed-off-by: Marino Faggiana <[email protected]> --------- Signed-off-by: Marino Faggiana <[email protected]> Co-authored-by: Marino Faggiana <[email protected]> * Build 4 Signed-off-by: Marino Faggiana <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * Build 5 Signed-off-by: Marino Faggiana <[email protected]> * Interceptor & Monitor Improved (#3348) * cod Signed-off-by: Marino Faggiana <[email protected]> * cod Signed-off-by: Marino Faggiana <[email protected]> * code Signed-off-by: Marino Faggiana <[email protected]> * cod Signed-off-by: Marino Faggiana <[email protected]> * cod Signed-off-by: Marino Faggiana <[email protected]> * cod Signed-off-by: Marino Faggiana <[email protected]> * cod Signed-off-by: Marino Faggiana <[email protected]> * cod Signed-off-by: Marino Faggiana <[email protected]> * cleaning Signed-off-by: Marino Faggiana <[email protected]> * cod Signed-off-by: Marino Faggiana <[email protected]> * cod Signed-off-by: Marino Faggiana <[email protected]> * cod Signed-off-by: Marino Faggiana <[email protected]> * Build 6 Signed-off-by: Marino Faggiana <[email protected]> --------- Signed-off-by: Marino Faggiana <[email protected]> Co-authored-by: Marino Faggiana <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * Process improvements Signed-off-by: Marino Faggiana <[email protected]> * cleaning code, change name functions server In Error Signed-off-by: Marino Faggiana <[email protected]> * cleaning code Signed-off-by: Marino Faggiana <[email protected]> * change Copyright Signed-off-by: Marino Faggiana <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * Improvements Server Error (#3349) * cod Signed-off-by: Marino Faggiana <[email protected]> * cod Signed-off-by: Marino Faggiana <[email protected]> * cod Signed-off-by: Marino Faggiana <[email protected]> * cod Signed-off-by: Marino Faggiana <[email protected]> * cod Signed-off-by: Marino Faggiana <[email protected]> * cod Signed-off-by: Marino Faggiana <[email protected]> * cod Signed-off-by: Marino Faggiana <[email protected]> * cod Signed-off-by: Marino Faggiana <[email protected]> --------- Signed-off-by: Marino Faggiana <[email protected]> Co-authored-by: Marino Faggiana <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * fixed timer in background Signed-off-by: Marino Faggiana <[email protected]> * Build 8 Signed-off-by: Marino Faggiana <[email protected]> * Fix Login Signed-off-by: Marino Faggiana <[email protected]> * Build 9 Signed-off-by: Marino Faggiana <[email protected]> * cleaning Signed-off-by: Marino Faggiana <[email protected]> * More extensive cookie removal for login Signed-off-by: Milen Pivchev <[email protected]> * NextcloudKit 6.0.2 Signed-off-by: Marino Faggiana <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * new build Signed-off-by: Marino Faggiana <[email protected]> * Fix login poll (again) + Additional bug fix (#3351) * Fix poll (again), fix bug on going back to login Signed-off-by: Milen Pivchev <[email protected]> * NextcloudKit 6.0.2 Signed-off-by: Marino Faggiana <[email protected]> --------- Signed-off-by: Milen Pivchev <[email protected]> Signed-off-by: Marino Faggiana <[email protected]> Co-authored-by: Marino Faggiana <[email protected]> * NextcloudKit 6.0.3 Signed-off-by: Marino Faggiana <[email protected]> * Assistant design improvements + V2 API (#3327) * WIP Signed-off-by: Milen Pivchev <[email protected]> * refactor Signed-off-by: Milen Pivchev <[email protected]> * WIP Signed-off-by: Milen Pivchev <[email protected]> * WIP Signed-off-by: Milen Pivchev <[email protected]> * WIP Signed-off-by: Milen Pivchev <[email protected]> * WIP Signed-off-by: Milen Pivchev <[email protected]> * WIP Signed-off-by: Milen Pivchev <[email protected]> * Change CI code Signed-off-by: Milen Pivchev <[email protected]> * UI tests Signed-off-by: Milen Pivchev <[email protected]> * WIP Signed-off-by: Milen Pivchev <[email protected]> * WIP Signed-off-by: Milen Pivchev <[email protected]> * Refactor date Signed-off-by: Milen Pivchev <[email protected]> * Refacgtor Signed-off-by: Milen Pivchev <[email protected]> * Refactor Signed-off-by: Milen Pivchev <[email protected]> * WIP Signed-off-by: Milen Pivchev <[email protected]> * PR changes Signed-off-by: Milen Pivchev <[email protected]> * Update Tests/NextcloudUITests/AssistantUITests.swift Co-authored-by: Iva Horn <[email protected]> Signed-off-by: Milen Pivchev <[email protected]> * PR fixes Signed-off-by: Milen Pivchev <[email protected]> * PR fixes 2 Signed-off-by: Milen Pivchev <[email protected]> * PR fixes 3 Signed-off-by: Milen Pivchev <[email protected]> --------- Signed-off-by: Milen Pivchev <[email protected]> Co-authored-by: Iva Horn <[email protected]> * Revert "Assistant design improvements + V2 API (#3327)" This reverts commit daa02d3. * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * Remove Photo only app active (#3357) * revert Signed-off-by: Marino Faggiana <[email protected]> * fix main thread Signed-off-by: Marino Faggiana <[email protected]> --------- Signed-off-by: Marino Faggiana <[email protected]> Co-authored-by: Marino Faggiana <[email protected]> * Assistant design improvements + V2 API (#3327) * Changed NextcloudKit branch reference from "assistant-v2" to "develop". Signed-off-by: Iva Horn <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * Remove old code for Nextcloud 17 or lower (#3363) * Remove code for NC17 and lower Signed-off-by: Milen Pivchev <[email protected]> * String Signed-off-by: Milen Pivchev <[email protected]> * Change var Signed-off-by: Milen Pivchev <[email protected]> --------- Signed-off-by: Milen Pivchev <[email protected]> * New assistant button (#3362) * added assistantButton Signed-off-by: Marino Faggiana <[email protected]> * NCMainNavigationController Improved Signed-off-by: Marino Faggiana <[email protected]> * NCMoreNavigationController Signed-off-by: Marino Faggiana <[email protected]> * Media assistant button Signed-off-by: Marino Faggiana <[email protected]> * Improved media bar Signed-off-by: Marino Faggiana <[email protected]> * Improved media bar Signed-off-by: Marino Faggiana <[email protected]> * cod Signed-off-by: Marino Faggiana <[email protected]> * fix priority Signed-off-by: Marino Faggiana <[email protected]> * fix Assistant icon Signed-off-by: Marino Faggiana <[email protected]> * fix Signed-off-by: Marino Faggiana <[email protected]> * fix Signed-off-by: Marino Faggiana <[email protected]> * fix Signed-off-by: Marino Faggiana <[email protected]> * NCNotification in present Signed-off-by: Marino Faggiana <[email protected]> * fix Signed-off-by: Marino Faggiana <[email protected]> * improved Signed-off-by: Marino Faggiana <[email protected]> * fix Signed-off-by: Marino Faggiana <[email protected]> * remove option directory on top Signed-off-by: Marino Faggiana <[email protected]> * show description improvements Signed-off-by: Marino Faggiana <[email protected]> * cleaning Signed-off-by: Marino Faggiana <[email protected]> * clean Signed-off-by: Marino Faggiana <[email protected]> * Version 6.5.0 Signed-off-by: Marino Faggiana <[email protected]> --------- Signed-off-by: Marino Faggiana <[email protected]> Co-authored-by: Marino Faggiana <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * clean old code Signed-off-by: Marino Faggiana <[email protected]> * Fix compile Signed-off-by: Milen Pivchev <[email protected]> * Fix compile 2 Signed-off-by: Milen Pivchev <[email protected]> * Search reload (#3367) * cod Signed-off-by: Marino Faggiana <[email protected]> * cod Signed-off-by: Marino Faggiana <[email protected]> * new build Signed-off-by: Marino Faggiana <[email protected]> --------- Signed-off-by: Marino Faggiana <[email protected]> Co-authored-by: Marino Faggiana <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * Improvements code (#3370) * improvements Signed-off-by: Marino Faggiana <[email protected]> * new build Signed-off-by: Marino Faggiana <[email protected]> --------- Signed-off-by: Marino Faggiana <[email protected]> Co-authored-by: Marino Faggiana <[email protected]> * File provider extension (#3371) * cod & fix Signed-off-by: Marino Faggiana <[email protected]> * cleaning Signed-off-by: Marino Faggiana <[email protected]> --------- Signed-off-by: Marino Faggiana <[email protected]> Co-authored-by: Marino Faggiana <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * remove old queue (#3373) Signed-off-by: Marino Faggiana <[email protected]> Co-authored-by: Marino Faggiana <[email protected]> * Nc operation delete file or folder (#3374) * cod Signed-off-by: Marino Faggiana <[email protected]> * cleaning Signed-off-by: Marino Faggiana <[email protected]> * cod Signed-off-by: Marino Faggiana <[email protected]> * build 3 Signed-off-by: Marino Faggiana <[email protected]> --------- Signed-off-by: Marino Faggiana <[email protected]> Co-authored-by: Marino Faggiana <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * fix Signed-off-by: Marino Faggiana <[email protected]> * bug fix Signed-off-by: Marino Faggiana <[email protected]> * build 4 Signed-off-by: Marino Faggiana <[email protected]> * update share - metadata (#3375) * step 1 Signed-off-by: Marino Faggiana <[email protected]> * fix Signed-off-by: Marino Faggiana <[email protected]> --------- Signed-off-by: Marino Faggiana <[email protected]> Co-authored-by: Marino Faggiana <[email protected]> * Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot <[email protected]> * close version Signed-off-by: Marino Faggiana <[email protected]> --------- Signed-off-by: Nextcloud bot <[email protected]> Signed-off-by: Marino Faggiana <[email protected]> Signed-off-by: Milen Pivchev <[email protected]> Signed-off-by: Iva Horn <[email protected]> Signed-off-by: Patrick Fischer <[email protected]> Signed-off-by: Serhii Kaliberda <[email protected]> Co-authored-by: Nextcloud bot <[email protected]> Co-authored-by: Marino Faggiana <[email protected]> Co-authored-by: Milen Pivchev <[email protected]> Co-authored-by: Iva Horn <[email protected]> Co-authored-by: Patrick <[email protected]> Co-authored-by: Serhii Kaliberda <[email protected]> Co-authored-by: rakekniven <[email protected]> Co-authored-by: Joas Schilling <[email protected]>
1 parent fceea8f commit d590f07

File tree

195 files changed

+1452
-1060
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

195 files changed

+1452
-1060
lines changed

File Provider Extension/FileProviderExtension.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ class FileProviderExtension: NSFileProviderExtension {
172172
guard let metadata else {
173173
return completionHandler(NSFileProviderError(.noSuchItem))
174174
}
175-
if metadata.session == NCNetworking.shared.sessionUploadBackgroundExt {
175+
if metadata.directory || metadata.session == NCNetworking.shared.sessionUploadBackgroundExt {
176176
return completionHandler(nil)
177177
}
178178
let serverUrlFileName = metadata.serverUrl + "/" + metadata.fileName

Nextcloud.xcodeproj/project.pbxproj

Lines changed: 44 additions & 20 deletions
Large diffs are not rendered by default.

Share/NCShareExtension+DataSource.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ extension NCShareExtension: UICollectionViewDataSource {
154154
cell.imageItem.image = NCImageCache.shared.getFolder(account: metadata.account)
155155
}
156156

157-
cell.labelInfo.text = utility.dateDiff(metadata.date as Date)
157+
cell.labelInfo.text = utility.getRelativeDateTitle(metadata.date as Date)
158158

159159
let lockServerUrl = utilityFileSystem.stringAppendServerUrl(metadata.serverUrl, addFileName: metadata.fileName)
160160
let tableDirectory = self.database.getTableDirectory(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@", session.account, lockServerUrl))

Share/NCShareExtension+Files.swift

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,9 @@ extension NCShareExtension {
3030
@objc func reloadDatasource(withLoadFolder: Bool) {
3131
let layoutForView = NCManageDatabase.shared.getLayoutForView(account: session.account, key: keyLayout, serverUrl: serverUrl) ?? NCDBLayoutForView()
3232
let predicate = NSPredicate(format: "account == %@ AND serverUrl == %@ AND directory == true", session.account, serverUrl)
33-
let directoryOnTop = NCKeychain().getDirectoryOnTop(account: session.account)
34-
let metadatas = self.database.getResultsMetadatasPredicate(predicate, layoutForView: layoutForView, directoryOnTop: directoryOnTop)
33+
let metadatas = self.database.getResultsMetadatasPredicate(predicate, layoutForView: layoutForView)
3534

36-
self.dataSource = NCCollectionViewDataSource(metadatas: metadatas, directoryOnTop: directoryOnTop)
35+
self.dataSource = NCCollectionViewDataSource(metadatas: metadatas)
3736

3837
if withLoadFolder {
3938
loadFolder()
Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
// SPDX-FileCopyrightText: Nextcloud GmbH
2+
// SPDX-FileCopyrightText: 2025 Iva Horn
3+
// SPDX-License-Identifier: GPL-3.0-or-later
4+
5+
import XCTest
6+
7+
///
8+
/// User interface tests for the download limits management on shares.
9+
///
10+
@MainActor
11+
final class AssistantUITests: BaseUIXCTestCase {
12+
let taskInputCreated = "TestTaskCreated" + UUID().uuidString
13+
let taskInputRetried = "TestTaskRetried" + UUID().uuidString
14+
let taskInputToEdit = "TestTaskToEdit" + UUID().uuidString
15+
let taskInputDeleted = "TestTaskDeleted" + UUID().uuidString
16+
17+
// MARK: - Lifecycle
18+
19+
override func setUp() async throws {
20+
try await super.setUp()
21+
continueAfterFailure = false
22+
23+
// Handle alerts presented by the system.
24+
addUIInterruptionMonitor(withDescription: "Allow Notifications", for: "Allow")
25+
addUIInterruptionMonitor(withDescription: "Save Password", for: "Not Now")
26+
27+
// Launch the app.
28+
app = XCUIApplication()
29+
app.launchArguments = ["UI_TESTING"]
30+
app.launch()
31+
32+
try await logIn()
33+
34+
// Set up test backend communication.
35+
backend = UITestBackend()
36+
37+
try await backend.assertCapability(true, capability: \.assistant)
38+
}
39+
40+
///
41+
/// Leads to the Assistant screen.
42+
///
43+
private func goToAssistant() {
44+
let button = app.tabBars["Tab Bar"].buttons["More"]
45+
guard button.await() else { return }
46+
button.tap()
47+
48+
let talkStaticText = app.tables.staticTexts["Assistant"]
49+
talkStaticText.tap()
50+
}
51+
52+
private func createTask(input: String) {
53+
app.navigationBars["Assistant"].buttons["CreateButton"].tap()
54+
55+
let inputTextEditor = app.textViews["InputTextEditor"]
56+
inputTextEditor.await()
57+
inputTextEditor.typeText(input)
58+
app.navigationBars["New Free text to text prompt task"].buttons["Create"].tap()
59+
}
60+
61+
private func retryTask() {
62+
let cell = app.collectionViews.children(matching: .cell).element(boundBy: 0)
63+
cell.staticTexts[taskInputRetried].press(forDuration: 2);
64+
65+
let retryButton = app.buttons["TaskRetryContextMenu"]
66+
XCTAssertTrue(retryButton.waitForExistence(timeout: 2), "Edit button not found in context menu")
67+
retryButton.tap()
68+
}
69+
70+
private func editTask() {
71+
let cell = app.collectionViews.children(matching: .cell).element(boundBy: 0)
72+
cell.staticTexts[taskInputToEdit].press(forDuration: 2);
73+
74+
let editButton = app.buttons["TaskEditContextMenu"]
75+
XCTAssertTrue(editButton.waitForExistence(timeout: 2), "Edit button not found in context menu")
76+
editButton.tap()
77+
78+
app.textViews["InputTextEditor"].typeText("Edited")
79+
app.navigationBars["Edit Free text to text prompt task"].buttons["Edit"].tap()
80+
}
81+
82+
private func deleteTask() {
83+
let cell = app.collectionViews.children(matching: .cell).element(boundBy: 0)
84+
cell.staticTexts[taskInputDeleted].press(forDuration: 2);
85+
86+
let deleteButton = app.buttons["TaskDeleteContextMenu"]
87+
XCTAssertTrue(deleteButton.waitForExistence(timeout: 2), "Edit button not found in context menu")
88+
deleteButton.tap()
89+
90+
app.sheets.scrollViews.otherElements.buttons["Delete"].tap()
91+
}
92+
93+
// MARK: - Tests
94+
95+
func testCreateAssistantTask() async throws {
96+
goToAssistant()
97+
98+
createTask(input: taskInputCreated)
99+
100+
pullToRefresh()
101+
102+
try await aMoment()
103+
104+
let cell = app.collectionViews.children(matching: .cell).element(boundBy: 0)
105+
XCTAssert(cell.staticTexts[taskInputCreated].exists)
106+
}
107+
108+
func testRetryAssistantTask() async throws {
109+
goToAssistant()
110+
111+
createTask(input: taskInputRetried)
112+
113+
retryTask()
114+
115+
pullToRefresh()
116+
117+
try await aMoment()
118+
119+
let matchingElements = app.collectionViews.cells.staticTexts.matching(identifier: taskInputRetried)
120+
print(app.collectionViews.staticTexts.debugDescription)
121+
XCTAssertEqual(matchingElements.count, 2, "Expected 2 elements")
122+
}
123+
124+
func testEditAssistantTask() async throws {
125+
goToAssistant()
126+
127+
createTask(input: taskInputToEdit)
128+
129+
editTask()
130+
131+
pullToRefresh()
132+
133+
try await aMoment()
134+
135+
let cell = app.collectionViews.children(matching: .cell).element(boundBy: 0)
136+
XCTAssert(cell.staticTexts[taskInputToEdit + "Edited"].exists)
137+
}
138+
139+
func testDeleteAssistantTask() async throws {
140+
goToAssistant()
141+
142+
createTask(input: taskInputDeleted)
143+
144+
deleteTask()
145+
146+
pullToRefresh()
147+
148+
try await aMoment()
149+
150+
let cell = app.collectionViews.children(matching: .cell).element(boundBy: 0)
151+
XCTAssert(!cell.staticTexts[taskInputDeleted].exists)
152+
}
153+
}
Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
// SPDX-FileCopyrightText: Nextcloud GmbH
2+
// SPDX-FileCopyrightText: 2025 Milen Pivchev
3+
// SPDX-License-Identifier: GPL-3.0-or-later
4+
5+
import Foundation
6+
import XCTest
7+
8+
@MainActor
9+
class BaseUIXCTestCase: XCTestCase {
10+
var app: XCUIApplication!
11+
12+
///
13+
/// The Nextcloud server API abstraction object.
14+
///
15+
var backend: UITestBackend!
16+
17+
///
18+
/// Generic convenience method to define user interface interruption monitors.
19+
///
20+
/// This is called every time an alert from outside the app's user interface is presented (in example system prompt about saving a password).
21+
/// Then the button is tapped defined by the given `label`.
22+
///
23+
/// - Parameters:
24+
/// - description: The human readable description for the monitor to create.
25+
/// - label: The localized text on the alert action to tap.
26+
///
27+
///
28+
func addUIInterruptionMonitor(withDescription description: String, for label: String) {
29+
addUIInterruptionMonitor(withDescription: description) { alert in
30+
let button = alert.buttons[label]
31+
32+
if button.exists {
33+
button.tap()
34+
return true
35+
}
36+
37+
return false
38+
}
39+
}
40+
41+
///
42+
/// Let the current `Task` rest for 2 seconds.
43+
///
44+
/// Some asynchronous background activities like the follow up request to define a download limit have no effect on the visible user interface.
45+
/// Hence their outcome can only be assumed after a brief period of time.
46+
///
47+
func aSmallMoment() async throws {
48+
try await Task.sleep(for: .seconds(2))
49+
}
50+
51+
///
52+
/// Let the current `Task` rest for ``TestConstants/controlExistenceTimeout``.
53+
///
54+
/// Some asynchronous background activities like the follow up request to define a download limit have no effect on the visible user interface.
55+
/// Hence their outcome can only be assumed after a brief period of time.
56+
///
57+
func aMoment() async throws {
58+
try await Task.sleep(for: .seconds(TestConstants.controlExistenceTimeout))
59+
}
60+
61+
///
62+
/// Automation of the sign-in, if required.
63+
///
64+
///
65+
func logIn() async throws {
66+
guard app.buttons["login"].exists else {
67+
return
68+
}
69+
70+
app.buttons["login"].tap()
71+
72+
let serverAddressTextField = app.textFields["serverAddress"].firstMatch
73+
guard serverAddressTextField.await() else { return }
74+
75+
serverAddressTextField.tap()
76+
serverAddressTextField.typeText(TestConstants.server)
77+
78+
app.buttons["submitServerAddress"].tap()
79+
80+
let webView = app.webViews.firstMatch
81+
82+
guard webView.await() else {
83+
throw UITestError.waitForExistence(webView)
84+
}
85+
86+
let loginButton = webView.buttons["Log in"]
87+
88+
if loginButton.await() {
89+
loginButton.tap()
90+
}
91+
92+
let usernameTextField = webView.textFields.firstMatch
93+
94+
if usernameTextField.await() {
95+
guard usernameTextField.await() else { return }
96+
usernameTextField.tap()
97+
usernameTextField.typeText(TestConstants.username)
98+
99+
let passwordSecureTextField = webView.secureTextFields.firstMatch
100+
passwordSecureTextField.tap()
101+
passwordSecureTextField.typeText(TestConstants.password)
102+
103+
webView.buttons.firstMatch.tap()
104+
}
105+
106+
try await aSmallMoment()
107+
108+
let grantButton = webView.buttons["Grant access"]
109+
110+
guard grantButton.await() else {
111+
throw UITestError.waitForExistence(grantButton)
112+
}
113+
114+
grantButton.tap()
115+
grantButton.awaitInexistence()
116+
117+
app.buttons["accountSwitcher"].await()
118+
119+
try await aSmallMoment()
120+
}
121+
122+
///
123+
/// Pull to refresh on the first found collection view to reveal the new file on the server.
124+
///
125+
func pullToRefresh(file: StaticString = #file, line: UInt = #line) {
126+
let cell = app.collectionViews.firstMatch.staticTexts.firstMatch
127+
128+
guard cell.exists else {
129+
XCTFail("Apparently no collection view cell is visible!", file: file, line: line)
130+
return
131+
}
132+
133+
let start = cell.coordinate(withNormalizedOffset: CGVectorMake(0, 0))
134+
let finish = cell.coordinate(withNormalizedOffset: CGVectorMake(0, 20))
135+
136+
start.press(forDuration: 0.2, thenDragTo: finish)
137+
}
138+
}

0 commit comments

Comments
 (0)