Skip to content

Conversation

@claucambra
Copy link
Contributor

@claucambra claucambra commented Jan 22, 2025

This PR makes it possible to build NextcloudKit with Swift 6.

Some types have been changed from classes into structs. I believe the API impacts of this should not be very big, though client code will probably need to change some lets into vars.

I have refactored the code of some of the filename-related classes to make them sendable compliant. API changes are not huge here either

The biggest change is the removal of the shared NextcloudKit singleton which is just not compatible with the Swift 6 safety model

@claucambra claucambra self-assigned this Jan 22, 2025
@claucambra claucambra force-pushed the feature/sendable-struct-types branch from b93b919 to cedcb5a Compare January 22, 2025 07:35
@i2h3
Copy link
Collaborator

i2h3 commented Jan 22, 2025

The biggest change is the removal of the shared NextcloudKit singleton which is just not compatible with the Swift 6 safety model

Nice, that was one of the reasons why I decided to not use NextcloudKit in the new iOS app UI tests I am currently working on (test isolation is easier without global state).

@marinofaggiana
Copy link
Member

This PR makes it possible to build NextcloudKit with Swift 6.

Some types have been changed from classes into structs. I believe the API impacts of this should not be very big, though client code will probably need to change some lets into vars.

I have refactored the code of some of the filename-related classes to make them sendable compliant. API changes are not huge here either

The biggest change is the removal of the shared NextcloudKit singleton which is just not compatible with the Swift 6 safety model

Great !

Copy link
Collaborator

@i2h3 i2h3 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I reviewed to read all the changes and learn what is going on but I am not as experienced as my colleagues with the package yet. @marinofaggiana and @mpivchev should also review, I guess.


class NKDataFileXML: NSObject {
let nkCommonInstance: NKCommon
var nkCommonInstance: NKCommon
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why change to vars here?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@claucambra could you please elaborate on this :)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry for missing this!

This is a var because NKCommon is now a struct (to make it more easily Sendable) and we use functions that mutate the struct instance (mainly getInternalType, which modifies the cache)

Copy link
Collaborator

@mpivchev mpivchev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good :)

@marinofaggiana
Copy link
Member

I must try it ... please do not merge

@claucambra
Copy link
Contributor Author

I must try it ... please do not merge

I won't, no rush :)

@marinofaggiana
Copy link
Member

@claucambra can you rebase it ?

Signed-off-by: Claudio Cambra <[email protected]>

f

Signed-off-by: Claudio Cambra <[email protected]>
This also modifies the behaviour of its methods to be sendable compliant
by using locking instead of a dispatch queue

Signed-off-by: Claudio Cambra <[email protected]>
Signed-off-by: Claudio Cambra <[email protected]>

f autorenamer

Signed-off-by: Claudio Cambra <[email protected]>

f autorenamer

Signed-off-by: Claudio Cambra <[email protected]>

f autorenamer 3

Signed-off-by: Claudio Cambra <[email protected]>
Signed-off-by: Claudio Cambra <[email protected]>

f filenamevalidator

Signed-off-by: Claudio Cambra <[email protected]>
Signed-off-by: Claudio Cambra <[email protected]>
Signed-off-by: Claudio Cambra <[email protected]>

f shared nckit

Signed-off-by: Claudio Cambra <[email protected]>
Signed-off-by: Claudio Cambra <[email protected]>

f nkfileproperty

Signed-off-by: Claudio Cambra <[email protected]>
This required modifying the caches into standard maps. Unfortunately
NSCache is not sendable compliant. I have made the changes take effect
only when building with Swift 6

Signed-off-by: Claudio Cambra <[email protected]>
This is seemingly expected by the autotests

Signed-off-by: Claudio Cambra <[email protected]>
@claucambra claucambra force-pushed the feature/sendable-struct-types branch from afa8745 to 0d3f5bb Compare January 30, 2025 04:00
@claucambra
Copy link
Contributor Author

@claucambra can you rebase it ?

Yes, done now

@marinofaggiana
Copy link
Member

@mpivchev Build with iOS/develop but I have an error in FileNameValidator, can you check ?

@marinofaggiana
Copy link
Member

We can merge it in develop please @claucambra @i2h3 @mpivchev

Work in the respective clients to adapt the requested changes, in case you need to create fixes to the current version that uses the previous library please use the 5.0.4 (which is the last one before this Swift 6 )

@marinofaggiana marinofaggiana merged commit 9924a98 into develop Jan 31, 2025
4 checks passed
marinofaggiana added a commit that referenced this pull request Mar 18, 2025
* nextcloud/ios#2390

Signed-off-by: Marino Faggiana <[email protected]>

* add async/await searchMedia

Signed-off-by: Marino Faggiana <[email protected]>

* Livephoto detect (#51)

* Update NKModel.swift

* cleaning

Signed-off-by: Marino Faggiana <[email protected]>

* Fix build on macOS broken by freeDisk change (#53)

Signed-off-by: Claudio Cambra <[email protected]>

* livePhotoFile -> fileId

Signed-off-by: Marino Faggiana <[email protected]>

* rollback

Signed-off-by: Marino Faggiana <[email protected]>

* rollback

Signed-off-by: Marino Faggiana <[email protected]>

* Fix error description chunk

Signed-off-by: Marino Faggiana <[email protected]>

* chunk error fix

Signed-off-by: Marino Faggiana <[email protected]>

* errorDescription

Signed-off-by: Marino Faggiana <[email protected]>

* added description

Signed-off-by: Marino Faggiana <[email protected]>

* Change to markdown

Signed-off-by: Milen Pivchev <[email protected]>

* Added e2ee options versionApi

Signed-off-by: Marino Faggiana <[email protected]>

* change variable name

Signed-off-by: Marino Faggiana <[email protected]>

* endpoint update

Signed-off-by: Marino Faggiana <[email protected]>

* Fix chunk S3 (#56)

* cod

Signed-off-by: Marino Faggiana <[email protected]>

* fix

Signed-off-by: Marino Faggiana <[email protected]>

---------

Signed-off-by: Marino Faggiana <[email protected]>

* public func

Signed-off-by: Marino Faggiana <[email protected]>

* lint

Signed-off-by: Marino Faggiana <[email protected]>

* remove description

Signed-off-by: Marino Faggiana <[email protected]>

* fix

Signed-off-by: Marino Faggiana <[email protected]>

* fix

Signed-off-by: Marino Faggiana <[email protected]>

* fix log

Signed-off-by: Marino Faggiana <[email protected]>

* Resolution - GPS (#59)

* fix resolution-gps

Signed-off-by: Marino Faggiana <[email protected]>

---------

Signed-off-by: Marino Faggiana <[email protected]>

* set h, w to Double

Signed-off-by: Marino Faggiana <[email protected]>

* coding (#61)

Signed-off-by: Marino Faggiana <[email protected]>

* normalized taskHandler
            taskHandler(task)
        }.

Signed-off-by: Marino Faggiana <[email protected]>

* add filename in trash (#63)

* add filename

Signed-off-by: Marino Faggiana <[email protected]>

* disable Build and test

Signed-off-by: Marino Faggiana <[email protected]>

---------

Signed-off-by: Marino Faggiana <[email protected]>

* Nextcloud Assistant (#66)

* getTextProcessingTaskTypes

Signed-off-by: Marino Faggiana <[email protected]>

* getTextProcessingTaskTypes

Signed-off-by: Marino Faggiana <[email protected]>

* NKTextProcessingTaskTypes

Signed-off-by: Marino Faggiana <[email protected]>

* coding

Signed-off-by: Marino Faggiana <[email protected]>

* coding

Signed-off-by: Marino Faggiana <[email protected]>

* coding

Signed-off-by: Marino Faggiana <[email protected]>

* coding

Signed-off-by: Marino Faggiana <[email protected]>

* fix

Signed-off-by: Marino Faggiana <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* Add init

Signed-off-by: Milen Pivchev <[email protected]>

* Change model

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

---------

Signed-off-by: Marino Faggiana <[email protected]>
Signed-off-by: Milen Pivchev <[email protected]>
Co-authored-by: Milen Pivchev <[email protected]>

* Add support for visionOS, fix tvOS and watchOS support (#67)

* Add CoreServices import for visionOS

Signed-off-by: Claudio Cambra <[email protected]>

* Fix screen scaling calculation when UIScreen is not available (for visionOS)

Signed-off-by: Claudio Cambra <[email protected]>

* Fix availability of UIImage.resizeImage on non iOS platforms

Signed-off-by: Claudio Cambra <[email protected]>

* Add visionOS target support to NextcloudKit

Signed-off-by: Claudio Cambra <[email protected]>

* Bump watchOS version up, per dependency requirements

Signed-off-by: Claudio Cambra <[email protected]>

* Remove reachability observation on watchOS, as this is unsupported in Alamofire

Signed-off-by: Claudio Cambra <[email protected]>

* Remove free disk calculation on watchOS which cannot be done

Signed-off-by: Claudio Cambra <[email protected]>

* Bump up tvOS version per dependencies

Signed-off-by: Claudio Cambra <[email protected]>

* Also restrict free space calculation on tvOS, as unavailable

Signed-off-by: Claudio Cambra <[email protected]>

---------

Signed-off-by: Claudio Cambra <[email protected]>

* Task description (#70)

* coding

Signed-off-by: Marino Faggiana <[email protected]>

* task.taskDescription

Signed-off-by: Marino Faggiana <[email protected]>

* DownloadingFinish

Signed-off-by: Marino Faggiana <[email protected]>

* fix

Signed-off-by: Marino Faggiana <[email protected]>

* improvements

Signed-off-by: Marino Faggiana <[email protected]>

* fix

Signed-off-by: Marino Faggiana <[email protected]>

---------

Signed-off-by: Marino Faggiana <[email protected]>

* change TypeIconFile (#71)

Signed-off-by: Marino Faggiana <[email protected]>

* Core Preview Improvements and use only fileId

Signed-off-by: Marino Faggiana <[email protected]>

* fix

Signed-off-by: Marino Faggiana <[email protected]>

* improvements

Signed-off-by: Marino Faggiana <[email protected]>

* Improvements

Signed-off-by: Marino Faggiana <[email protected]>

* added compressionQuality

Signed-off-by: Marino Faggiana <[email protected]>

* Improvements (#76)



Signed-off-by: Marino Faggiana <[email protected]>

* improved code

Signed-off-by: Marino Faggiana <[email protected]>

* fix paramenters default

Signed-off-by: Marino Faggiana <[email protected]>

* fix paramenters default

Signed-off-by: Marino Faggiana <[email protected]>

* improvements

Signed-off-by: Marino Faggiana <[email protected]>

* cod

Signed-off-by: Marino Faggiana <[email protected]>

* improvements

Signed-off-by: Marino Faggiana <[email protected]>

* downloadPreview

Signed-off-by: Marino Faggiana <[email protected]>

* added downloadPreview url

Signed-off-by: Marino Faggiana <[email protected]>

* httpCookieStorage (#80)


Signed-off-by: Marino Faggiana <[email protected]>

* new getUserProfile()

Signed-off-by: Marino Faggiana <[email protected]>

* change paramenter name

Signed-off-by: Marino Faggiana <[email protected]>

* Account (#82)

* 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]>

* cod

Signed-off-by: Marino Faggiana <[email protected]>

* Revert "cod"

This reverts commit 83b75a1.

Signed-off-by: Marino Faggiana <[email protected]>

* Filename validator (#83)

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* cleanup

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* Make singleton

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]>

---------

Signed-off-by: Milen Pivchev <[email protected]>

* fix session delegate

Signed-off-by: Marino Faggiana <[email protected]>

* fix

Signed-off-by: Marino Faggiana <[email protected]>

* Filename validator (#92)

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* cleanup

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* Make singleton

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]>

* 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]>

---------

Signed-off-by: Milen Pivchev <[email protected]>
Co-authored-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* NextcloudKit Version 5 - Multisession  (#94)


---------

Signed-off-by: Marino Faggiana <[email protected]>
Signed-off-by: Milen Pivchev <[email protected]>
Co-authored-by: Milen Pivchev <[email protected]>

* NextcloudKit V 5

Signed-off-by: Marino Faggiana <[email protected]>

* fix

Signed-off-by: Marino Faggiana <[email protected]>

* requestCachePolicy

Signed-off-by: Marino Faggiana <[email protected]>

* cache

Signed-off-by: Marino Faggiana <[email protected]>

* cache

Signed-off-by: Marino Faggiana <[email protected]>

* cache

Signed-off-by: Marino Faggiana <[email protected]>

* Add optional spaces and periods - WCF

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]>

* Response (#97)

* API

Signed-off-by: Marino Faggiana <[email protected]>

* assistant

Signed-off-by: Marino Faggiana <[email protected]>

* comments

Signed-off-by: Marino Faggiana <[email protected]>

* dashboard

Signed-off-by: Marino Faggiana <[email protected]>

* e2ee

Signed-off-by: Marino Faggiana <[email protected]>

* groupfolders

Signed-off-by: Marino Faggiana <[email protected]>

* hovercard

Signed-off-by: Marino Faggiana <[email protected]>

* login

Signed-off-by: Marino Faggiana <[email protected]>

* nctext

Signed-off-by: Marino Faggiana <[email protected]>

* pn

Signed-off-by: Marino Faggiana <[email protected]>

* richdocuments

Signed-off-by: Marino Faggiana <[email protected]>

* search

Signed-off-by: Marino Faggiana <[email protected]>

* share

Signed-off-by: Marino Faggiana <[email protected]>

* userstatus

Signed-off-by: Marino Faggiana <[email protected]>

* webdav

Signed-off-by: Marino Faggiana <[email protected]>

* upload

Signed-off-by: Marino Faggiana <[email protected]>

* API

Signed-off-by: Marino Faggiana <[email protected]>

* download

Signed-off-by: Marino Faggiana <[email protected]>

* upload

Signed-off-by: Marino Faggiana <[email protected]>

* NextcloudKitSessionDelegate

Signed-off-by: Marino Faggiana <[email protected]>

* normalized

Signed-off-by: Marino Faggiana <[email protected]>

---------

Signed-off-by: Marino Faggiana <[email protected]>

* ThreadSafeArray

Signed-off-by: Marino Faggiana <[email protected]>

* logger delegate

Signed-off-by: Marino Faggiana <[email protected]>

* fix message 503

Signed-off-by: Marino Faggiana <[email protected]>

* public

Signed-off-by: Marino Faggiana <[email protected]>

* fix error

Signed-off-by: Marino Faggiana <[email protected]>

* Add reuse compliance (#96)

* Auto rename (#99)

* 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]>

* License

Signed-off-by: Milen Pivchev <[email protected]>

* Licenses

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* Swiftlint fixes

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* Fix lint issue

Signed-off-by: Milen Pivchev <[email protected]>

* Fix ordering

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]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* License

Signed-off-by: Milen Pivchev <[email protected]>

* Licenses

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* Swiftlint fixes

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* Fix lint issue

Signed-off-by: Milen Pivchev <[email protected]>

* Fix ordering

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]>

---------

Signed-off-by: Milen Pivchev <[email protected]>
Co-authored-by: Marino Faggiana <[email protected]>

* Keep original extension

Signed-off-by: Milen Pivchev <[email protected]>

* Refactor

Signed-off-by: Milen Pivchev <[email protected]>

* License (#102)

Signed-off-by: Marino Faggiana <[email protected]>

* ( multipathServiceType )

Signed-off-by: Marino Faggiana <[email protected]>

* Add more extensive test for AutoRenamer (#101)

* Add more extensive test

Signed-off-by: Milen Pivchev <[email protected]>

* Force check

Signed-off-by: Milen Pivchev <[email protected]>

* Revert "Force check"

This reverts commit b7fadf6.

* 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]>

* 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]>

---------

Signed-off-by: Milen Pivchev <[email protected]>
Co-authored-by: Marino Faggiana <[email protected]>

* Split NKModel.swift into designated source code files for every contained type.

Signed-off-by: Iva Horn <[email protected]>

* Update README.md (#106)

Signed-off-by: Milen Pivchev <[email protected]>

* Prettier Landing Page (#108)

- Replaced logo with an self-created image based on the Apple symbol design for frameworks.
- Removed the "V 2" in the top level heading because it contradicts the current major version 5.
- Corrected alt text of image which appears to be copied and pasted from Nextcloud iOS app README.
- Improved orthography on testing headings.
- Added syntax definitions to some code fences.
- Minor formatting improvements.

* Reenabled build on macOS. (#109)

Certain APIs used were not available on macOS in general or the currently supported version per package manifest. I added necessary code switches to make the code at least build again.

Co-authored-by: Marino Faggiana <[email protected]>

* Track ocId in NKTrash items (#110)

Signed-off-by: Claudio Cambra <[email protected]>

* Dav pagination (#111)

* add paginate

Signed-off-by: Marino Faggiana <[email protected]>

* StandardHeaders

Signed-off-by: Marino Faggiana <[email protected]>

* code

Signed-off-by: Marino Faggiana <[email protected]>

* fix

Signed-off-by: Marino Faggiana <[email protected]>

---------

Signed-off-by: Marino Faggiana <[email protected]>

* Terms of Service (#112)

* tos

Signed-off-by: Marino Faggiana <[email protected]>

* getTermsOfService

Signed-off-by: Marino Faggiana <[email protected]>

* getTermsOfService

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]>

* signTermsOfService

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]>

---------

Signed-off-by: Marino Faggiana <[email protected]>

* Added capabilities to manage share download limits. (#107)

- Requesting share download limit capability of files_downloadlimit app.
- Augmented WebDAV metadata requests and responses with optional share download limits.
- Extended NextcloudKit with methods to manage share download limits via OCS.

Signed-off-by: Iva Horn <[email protected]>

* Recommended files (#115)

* 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]>

* improvements

Signed-off-by: Marino Faggiana <[email protected]>

* Allow setting custom destinations in chunked upload (#116)

* Allow setting a different destination file name from local file name in chunked upload

Using macOS File Provider APIs we rely on the system to provide us with
a URL pointing the an item's local modified contents. This URL last path
component is a UUID and does not represent the expected file name of the
item.

The current API of uploadChunk presents a problem because it assumes the
local content file's filename is the same as what will eventually be
uploaded to the server. This commit addresses the issue by allowing
users of this function to provide a destination file name which will
replace the provided local filename, if used.

Signed-off-by: Claudio Cambra <[email protected]>

* Make file chunks output directory customisable

Currently the chunking procedure produces file chunks within the
directory of the input file. However, this fails in cases where the
directory is read-only.

This can be fixed by allowing the chunked files output directory to be
changed

Signed-off-by: Claudio Cambra <[email protected]>

---------

Signed-off-by: Claudio Cambra <[email protected]>

* added httpMaximumConnectionsPerHost

Signed-off-by: Marino Faggiana <[email protected]>

* httpMaximumConnectionsPerHost

Signed-off-by: Marino Faggiana <[email protected]>

* appendSession

Signed-off-by: Marino Faggiana <[email protected]>

* cod

Signed-off-by: Marino Faggiana <[email protected]>

* Added feature to get download limits explicitly via OCS API.

Signed-off-by: Iva Horn <[email protected]>

* Update FileNameValidator.swift

* Make NextcloudKit Swift 6 compatible (#119)

* Define NKDownloadLimit as a sendable struct

Signed-off-by: Claudio Cambra <[email protected]>

* Define NKFile as a sendable struct

Signed-off-by: Claudio Cambra <[email protected]>

* Define NKSession as a sendable struct

Signed-off-by: Claudio Cambra <[email protected]>

f

Signed-off-by: Claudio Cambra <[email protected]>

* Define UTTypeConformsToServer as a sendable struct

Signed-off-by: Claudio Cambra <[email protected]>

* Define NKError as a sendable, equatable struct

Signed-off-by: Claudio Cambra <[email protected]>

* Convert ThreadSafeArray into a sendable struct

This also modifies the behaviour of its methods to be sendable compliant
by using locking instead of a dispatch queue

Signed-off-by: Claudio Cambra <[email protected]>

* Make FileAutoRenamer Sendable compliant

Signed-off-by: Claudio Cambra <[email protected]>

f autorenamer

Signed-off-by: Claudio Cambra <[email protected]>

f autorenamer

Signed-off-by: Claudio Cambra <[email protected]>

f autorenamer 3

Signed-off-by: Claudio Cambra <[email protected]>

* Make FileNameValidator Sendable compliant

Signed-off-by: Claudio Cambra <[email protected]>

f filenamevalidator

Signed-off-by: Claudio Cambra <[email protected]>

* Fix copyright header in NSLock extension

Signed-off-by: Claudio Cambra <[email protected]>

* Use self createFolder rather than going for shared instance

Signed-off-by: Claudio Cambra <[email protected]>

* Make NextcloudKitDelegate protocol sendable

Signed-off-by: Claudio Cambra <[email protected]>

* Make NKBackground a final class

Signed-off-by: Claudio Cambra <[email protected]>

* Make NextcloudKitSessionDelegate conform to sendable

Signed-off-by: Claudio Cambra <[email protected]>

* Use the appropriate nkCommonInstance in NKSession initialiser

Signed-off-by: Claudio Cambra <[email protected]>

* Make nkCommonInstance mutable in NextcloudKit

Signed-off-by: Claudio Cambra <[email protected]>

* Only provide shared NextcloudKit instance on swift <6

Signed-off-by: Claudio Cambra <[email protected]>

f shared nckit

Signed-off-by: Claudio Cambra <[email protected]>

* When using swift 6, use a task to retrieve screen scale on iOS

Signed-off-by: Claudio Cambra <[email protected]>

* Make NKFileProperty a sendable struct

Signed-off-by: Claudio Cambra <[email protected]>

f nkfileproperty

Signed-off-by: Claudio Cambra <[email protected]>

* Convert NKCommon into a sendable struct

This required modifying the caches into standard maps. Unfortunately
NSCache is not sendable compliant. I have made the changes take effect
only when building with Swift 6

Signed-off-by: Claudio Cambra <[email protected]>

* Fix whitespace handling in FileAutoRenamer

Signed-off-by: Claudio Cambra <[email protected]>

* Remove leading dot for hidden file filenames in autorenamer

This is seemingly expected by the autotests

Signed-off-by: Claudio Cambra <[email protected]>

---------

Signed-off-by: Claudio Cambra <[email protected]>
Co-authored-by: Milen Pivchev <[email protected]>

* Add static/refactor

Signed-off-by: Milen Pivchev <[email protected]>

* NextcloudKitDelegate

Signed-off-by: Marino Faggiana <[email protected]>

* change Name to NKMonitor

Signed-off-by: Marino Faggiana <[email protected]>

* Added NKInterceptor

Signed-off-by: Marino Faggiana <[email protected]>

* Interceptor

Signed-off-by: Marino Faggiana <[email protected]>

* Interceptor

Signed-off-by: Marino Faggiana <[email protected]>

* interceptor

Signed-off-by: Marino Faggiana <[email protected]>

* cleaning

Signed-off-by: Marino Faggiana <[email protected]>

* Interceptor

Signed-off-by: Marino Faggiana <[email protected]>

* INterceptor

Signed-off-by: Marino Faggiana <[email protected]>

* sendable

Signed-off-by: Marino Faggiana <[email protected]>

* test

Signed-off-by: Marino Faggiana <[email protected]>

* cleaning

Signed-off-by: Marino Faggiana <[email protected]>

* checkUnauthorized

Signed-off-by: Marino Faggiana <[email protected]>

* debug

Signed-off-by: Marino Faggiana <[email protected]>

* X-NC-CheckUnauthorized

Signed-off-by: Marino Faggiana <[email protected]>

* test

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]>

* common (#121)

* fix

Signed-off-by: Marino Faggiana <[email protected]>

* cod

Signed-off-by: Marino Faggiana <[email protected]>

---------

Signed-off-by: Marino Faggiana <[email protected]>

* cleaning

Signed-off-by: Marino Faggiana <[email protected]>

* cleaning

Signed-off-by: Marino Faggiana <[email protected]>

* added checkUnauthorized options

Signed-off-by: Marino Faggiana <[email protected]>

* cod

Signed-off-by: Marino Faggiana <[email protected]>

* fix

Signed-off-by: Marino Faggiana <[email protected]>

* cleaning

Signed-off-by: Marino Faggiana <[email protected]>

* cod

Signed-off-by: Marino Faggiana <[email protected]>

* setupLog

Signed-off-by: Marino Faggiana <[email protected]>

* dependencies version updated

Signed-off-by: Marino Faggiana <[email protected]>

* improved code

Signed-off-by: Marino Faggiana <[email protected]>

* improved

Signed-off-by: Marino Faggiana <[email protected]>

* cleaning

Signed-off-by: Marino Faggiana <[email protected]>

* debugPrint

Signed-off-by: Marino Faggiana <[email protected]>

* debugprint

Signed-off-by: Marino Faggiana <[email protected]>

* cod

Signed-off-by: Marino Faggiana <[email protected]>

* log

Signed-off-by: Marino Faggiana <[email protected]>

* cleaning

Signed-off-by: Marino Faggiana <[email protected]>

* LOG (#123)

* cod

Signed-off-by: Marino Faggiana <[email protected]>

* cod

Signed-off-by: Marino Faggiana <[email protected]>

---------

Signed-off-by: Marino Faggiana <[email protected]>

* added request delagate

Signed-off-by: Marino Faggiana <[email protected]>

* cleaning

Signed-off-by: Marino Faggiana <[email protected]>

* protocol NextcloudKitDelegate optional

Signed-off-by: Marino Faggiana <[email protected]>

* added getRequestBodyFileExists

Signed-off-by: Marino Faggiana <[email protected]>

* public

Signed-off-by: Marino Faggiana <[email protected]>

* fix

Signed-off-by: Marino Faggiana <[email protected]>

* init

Signed-off-by: Marino Faggiana <[email protected]>

* Interceptor & Monitor Improved   (#126)

* cod

Signed-off-by: Marino Faggiana <[email protected]>

* cod

Signed-off-by: Marino Faggiana <[email protected]>

* code

Signed-off-by: Marino Faggiana <[email protected]>

* fix

Signed-off-by: Marino Faggiana <[email protected]>

* improvements

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]>

* Improved code

Signed-off-by: Marino Faggiana <[email protected]>

* Improvements

Signed-off-by: Marino Faggiana <[email protected]>

* Upload fix multisession (#129)

* fix

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: Login poll without cached responses.

Signed-off-by: Milen Pivchev <[email protected]>

* Assistant V2

Signed-off-by: Milen Pivchev <[email protected]>

Fix compile

Signed-off-by: Milen Pivchev <[email protected]>

Refactor

Signed-off-by: Milen Pivchev <[email protected]>

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]>

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]>

Refactor

Signed-off-by: Milen Pivchev <[email protected]>

Finish

Signed-off-by: Milen Pivchev <[email protected]>

Compliance

Signed-off-by: Milen Pivchev <[email protected]>

PR fixes

Signed-off-by: Milen Pivchev <[email protected]>

Assistant API v2 (#124)

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* Fix compile

Signed-off-by: Milen Pivchev <[email protected]>

* Refactor

Signed-off-by: Milen Pivchev <[email protected]>

* 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]>

* 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]>

* Refactor

Signed-off-by: Milen Pivchev <[email protected]>

* Finish

Signed-off-by: Milen Pivchev <[email protected]>

* Compliance

Signed-off-by: Milen Pivchev <[email protected]>

* PR fixes

Signed-off-by: Milen Pivchev <[email protected]>

* Upload fix multisession (#129)

* fix

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: Login poll without cached responses.

Signed-off-by: Milen Pivchev <[email protected]>

* Linter

Signed-off-by: Milen Pivchev <[email protected]>

---------

Signed-off-by: Milen Pivchev <[email protected]>
Signed-off-by: Marino Faggiana <[email protected]>
Co-authored-by: Marino Faggiana <[email protected]>
Co-authored-by: Marino Faggiana <[email protected]>

---------

Signed-off-by: Marino Faggiana <[email protected]>
Signed-off-by: Marino Faggiana <[email protected]>
Signed-off-by: Claudio Cambra <[email protected]>
Signed-off-by: Milen Pivchev <[email protected]>
Signed-off-by: Iva Horn <[email protected]>
Co-authored-by: Marino Faggiana <[email protected]>
Co-authored-by: Marino Faggiana <[email protected]>
Co-authored-by: Claudio Cambra <[email protected]>
Co-authored-by: Milen Pivchev <[email protected]>
Co-authored-by: Andy Scherzinger <[email protected]>
Co-authored-by: Iva Horn <[email protected]>
marinofaggiana added a commit that referenced this pull request Apr 24, 2025
* Version 6.0.4 (#131)

* nextcloud/ios#2390

Signed-off-by: Marino Faggiana <[email protected]>

* add async/await searchMedia

Signed-off-by: Marino Faggiana <[email protected]>

* Livephoto detect (#51)

* Update NKModel.swift

* cleaning

Signed-off-by: Marino Faggiana <[email protected]>

* Fix build on macOS broken by freeDisk change (#53)

Signed-off-by: Claudio Cambra <[email protected]>

* livePhotoFile -> fileId

Signed-off-by: Marino Faggiana <[email protected]>

* rollback

Signed-off-by: Marino Faggiana <[email protected]>

* rollback

Signed-off-by: Marino Faggiana <[email protected]>

* Fix error description chunk

Signed-off-by: Marino Faggiana <[email protected]>

* chunk error fix

Signed-off-by: Marino Faggiana <[email protected]>

* errorDescription

Signed-off-by: Marino Faggiana <[email protected]>

* added description

Signed-off-by: Marino Faggiana <[email protected]>

* Change to markdown

Signed-off-by: Milen Pivchev <[email protected]>

* Added e2ee options versionApi

Signed-off-by: Marino Faggiana <[email protected]>

* change variable name

Signed-off-by: Marino Faggiana <[email protected]>

* endpoint update

Signed-off-by: Marino Faggiana <[email protected]>

* Fix chunk S3 (#56)

* cod

Signed-off-by: Marino Faggiana <[email protected]>

* fix

Signed-off-by: Marino Faggiana <[email protected]>

---------

Signed-off-by: Marino Faggiana <[email protected]>

* public func

Signed-off-by: Marino Faggiana <[email protected]>

* lint

Signed-off-by: Marino Faggiana <[email protected]>

* remove description

Signed-off-by: Marino Faggiana <[email protected]>

* fix

Signed-off-by: Marino Faggiana <[email protected]>

* fix

Signed-off-by: Marino Faggiana <[email protected]>

* fix log

Signed-off-by: Marino Faggiana <[email protected]>

* Resolution - GPS (#59)

* fix resolution-gps

Signed-off-by: Marino Faggiana <[email protected]>

---------

Signed-off-by: Marino Faggiana <[email protected]>

* set h, w to Double

Signed-off-by: Marino Faggiana <[email protected]>

* coding (#61)

Signed-off-by: Marino Faggiana <[email protected]>

* normalized taskHandler
            taskHandler(task)
        }.

Signed-off-by: Marino Faggiana <[email protected]>

* add filename in trash (#63)

* add filename

Signed-off-by: Marino Faggiana <[email protected]>

* disable Build and test

Signed-off-by: Marino Faggiana <[email protected]>

---------

Signed-off-by: Marino Faggiana <[email protected]>

* Nextcloud Assistant (#66)

* getTextProcessingTaskTypes

Signed-off-by: Marino Faggiana <[email protected]>

* getTextProcessingTaskTypes

Signed-off-by: Marino Faggiana <[email protected]>

* NKTextProcessingTaskTypes

Signed-off-by: Marino Faggiana <[email protected]>

* coding

Signed-off-by: Marino Faggiana <[email protected]>

* coding

Signed-off-by: Marino Faggiana <[email protected]>

* coding

Signed-off-by: Marino Faggiana <[email protected]>

* coding

Signed-off-by: Marino Faggiana <[email protected]>

* fix

Signed-off-by: Marino Faggiana <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* Add init

Signed-off-by: Milen Pivchev <[email protected]>

* Change model

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

---------

Signed-off-by: Marino Faggiana <[email protected]>
Signed-off-by: Milen Pivchev <[email protected]>
Co-authored-by: Milen Pivchev <[email protected]>

* Add support for visionOS, fix tvOS and watchOS support (#67)

* Add CoreServices import for visionOS

Signed-off-by: Claudio Cambra <[email protected]>

* Fix screen scaling calculation when UIScreen is not available (for visionOS)

Signed-off-by: Claudio Cambra <[email protected]>

* Fix availability of UIImage.resizeImage on non iOS platforms

Signed-off-by: Claudio Cambra <[email protected]>

* Add visionOS target support to NextcloudKit

Signed-off-by: Claudio Cambra <[email protected]>

* Bump watchOS version up, per dependency requirements

Signed-off-by: Claudio Cambra <[email protected]>

* Remove reachability observation on watchOS, as this is unsupported in Alamofire

Signed-off-by: Claudio Cambra <[email protected]>

* Remove free disk calculation on watchOS which cannot be done

Signed-off-by: Claudio Cambra <[email protected]>

* Bump up tvOS version per dependencies

Signed-off-by: Claudio Cambra <[email protected]>

* Also restrict free space calculation on tvOS, as unavailable

Signed-off-by: Claudio Cambra <[email protected]>

---------

Signed-off-by: Claudio Cambra <[email protected]>

* Task description (#70)

* coding

Signed-off-by: Marino Faggiana <[email protected]>

* task.taskDescription

Signed-off-by: Marino Faggiana <[email protected]>

* DownloadingFinish

Signed-off-by: Marino Faggiana <[email protected]>

* fix

Signed-off-by: Marino Faggiana <[email protected]>

* improvements

Signed-off-by: Marino Faggiana <[email protected]>

* fix

Signed-off-by: Marino Faggiana <[email protected]>

---------

Signed-off-by: Marino Faggiana <[email protected]>

* change TypeIconFile (#71)

Signed-off-by: Marino Faggiana <[email protected]>

* Core Preview Improvements and use only fileId

Signed-off-by: Marino Faggiana <[email protected]>

* fix

Signed-off-by: Marino Faggiana <[email protected]>

* improvements

Signed-off-by: Marino Faggiana <[email protected]>

* Improvements

Signed-off-by: Marino Faggiana <[email protected]>

* added compressionQuality

Signed-off-by: Marino Faggiana <[email protected]>

* Improvements (#76)



Signed-off-by: Marino Faggiana <[email protected]>

* improved code

Signed-off-by: Marino Faggiana <[email protected]>

* fix paramenters default

Signed-off-by: Marino Faggiana <[email protected]>

* fix paramenters default

Signed-off-by: Marino Faggiana <[email protected]>

* improvements

Signed-off-by: Marino Faggiana <[email protected]>

* cod

Signed-off-by: Marino Faggiana <[email protected]>

* improvements

Signed-off-by: Marino Faggiana <[email protected]>

* downloadPreview

Signed-off-by: Marino Faggiana <[email protected]>

* added downloadPreview url

Signed-off-by: Marino Faggiana <[email protected]>

* httpCookieStorage (#80)


Signed-off-by: Marino Faggiana <[email protected]>

* new getUserProfile()

Signed-off-by: Marino Faggiana <[email protected]>

* change paramenter name

Signed-off-by: Marino Faggiana <[email protected]>

* Account (#82)

* 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]>

* cod

Signed-off-by: Marino Faggiana <[email protected]>

* Revert "cod"

This reverts commit 83b75a1.

Signed-off-by: Marino Faggiana <[email protected]>

* Filename validator (#83)

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* cleanup

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* Make singleton

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]>

---------

Signed-off-by: Milen Pivchev <[email protected]>

* fix session delegate

Signed-off-by: Marino Faggiana <[email protected]>

* fix

Signed-off-by: Marino Faggiana <[email protected]>

* Filename validator (#92)

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* cleanup

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* Make singleton

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]>

* 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]>

---------

Signed-off-by: Milen Pivchev <[email protected]>
Co-authored-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* NextcloudKit Version 5 - Multisession  (#94)


---------

Signed-off-by: Marino Faggiana <[email protected]>
Signed-off-by: Milen Pivchev <[email protected]>
Co-authored-by: Milen Pivchev <[email protected]>

* NextcloudKit V 5

Signed-off-by: Marino Faggiana <[email protected]>

* fix

Signed-off-by: Marino Faggiana <[email protected]>

* requestCachePolicy

Signed-off-by: Marino Faggiana <[email protected]>

* cache

Signed-off-by: Marino Faggiana <[email protected]>

* cache

Signed-off-by: Marino Faggiana <[email protected]>

* cache

Signed-off-by: Marino Faggiana <[email protected]>

* Add optional spaces and periods - WCF

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]>

* Response (#97)

* API

Signed-off-by: Marino Faggiana <[email protected]>

* assistant

Signed-off-by: Marino Faggiana <[email protected]>

* comments

Signed-off-by: Marino Faggiana <[email protected]>

* dashboard

Signed-off-by: Marino Faggiana <[email protected]>

* e2ee

Signed-off-by: Marino Faggiana <[email protected]>

* groupfolders

Signed-off-by: Marino Faggiana <[email protected]>

* hovercard

Signed-off-by: Marino Faggiana <[email protected]>

* login

Signed-off-by: Marino Faggiana <[email protected]>

* nctext

Signed-off-by: Marino Faggiana <[email protected]>

* pn

Signed-off-by: Marino Faggiana <[email protected]>

* richdocuments

Signed-off-by: Marino Faggiana <[email protected]>

* search

Signed-off-by: Marino Faggiana <[email protected]>

* share

Signed-off-by: Marino Faggiana <[email protected]>

* userstatus

Signed-off-by: Marino Faggiana <[email protected]>

* webdav

Signed-off-by: Marino Faggiana <[email protected]>

* upload

Signed-off-by: Marino Faggiana <[email protected]>

* API

Signed-off-by: Marino Faggiana <[email protected]>

* download

Signed-off-by: Marino Faggiana <[email protected]>

* upload

Signed-off-by: Marino Faggiana <[email protected]>

* NextcloudKitSessionDelegate

Signed-off-by: Marino Faggiana <[email protected]>

* normalized

Signed-off-by: Marino Faggiana <[email protected]>

---------

Signed-off-by: Marino Faggiana <[email protected]>

* ThreadSafeArray

Signed-off-by: Marino Faggiana <[email protected]>

* logger delegate

Signed-off-by: Marino Faggiana <[email protected]>

* fix message 503

Signed-off-by: Marino Faggiana <[email protected]>

* public

Signed-off-by: Marino Faggiana <[email protected]>

* fix error

Signed-off-by: Marino Faggiana <[email protected]>

* Add reuse compliance (#96)

* Auto rename (#99)

* 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]>

* License

Signed-off-by: Milen Pivchev <[email protected]>

* Licenses

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* Swiftlint fixes

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* Fix lint issue

Signed-off-by: Milen Pivchev <[email protected]>

* Fix ordering

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]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* License

Signed-off-by: Milen Pivchev <[email protected]>

* Licenses

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* Swiftlint fixes

Signed-off-by: Milen Pivchev <[email protected]>

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* Fix lint issue

Signed-off-by: Milen Pivchev <[email protected]>

* Fix ordering

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]>

---------

Signed-off-by: Milen Pivchev <[email protected]>
Co-authored-by: Marino Faggiana <[email protected]>

* Keep original extension

Signed-off-by: Milen Pivchev <[email protected]>

* Refactor

Signed-off-by: Milen Pivchev <[email protected]>

* License (#102)

Signed-off-by: Marino Faggiana <[email protected]>

* ( multipathServiceType )

Signed-off-by: Marino Faggiana <[email protected]>

* Add more extensive test for AutoRenamer (#101)

* Add more extensive test

Signed-off-by: Milen Pivchev <[email protected]>

* Force check

Signed-off-by: Milen Pivchev <[email protected]>

* Revert "Force check"

This reverts commit b7fadf6.

* 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]>

* 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]>

---------

Signed-off-by: Milen Pivchev <[email protected]>
Co-authored-by: Marino Faggiana <[email protected]>

* Split NKModel.swift into designated source code files for every contained type.

Signed-off-by: Iva Horn <[email protected]>

* Update README.md (#106)

Signed-off-by: Milen Pivchev <[email protected]>

* Prettier Landing Page (#108)

- Replaced logo with an self-created image based on the Apple symbol design for frameworks.
- Removed the "V 2" in the top level heading because it contradicts the current major version 5.
- Corrected alt text of image which appears to be copied and pasted from Nextcloud iOS app README.
- Improved orthography on testing headings.
- Added syntax definitions to some code fences.
- Minor formatting improvements.

* Reenabled build on macOS. (#109)

Certain APIs used were not available on macOS in general or the currently supported version per package manifest. I added necessary code switches to make the code at least build again.

Co-authored-by: Marino Faggiana <[email protected]>

* Track ocId in NKTrash items (#110)

Signed-off-by: Claudio Cambra <[email protected]>

* Dav pagination (#111)

* add paginate

Signed-off-by: Marino Faggiana <[email protected]>

* StandardHeaders

Signed-off-by: Marino Faggiana <[email protected]>

* code

Signed-off-by: Marino Faggiana <[email protected]>

* fix

Signed-off-by: Marino Faggiana <[email protected]>

---------

Signed-off-by: Marino Faggiana <[email protected]>

* Terms of Service (#112)

* tos

Signed-off-by: Marino Faggiana <[email protected]>

* getTermsOfService

Signed-off-by: Marino Faggiana <[email protected]>

* getTermsOfService

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]>

* signTermsOfService

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]>

---------

Signed-off-by: Marino Faggiana <[email protected]>

* Added capabilities to manage share download limits. (#107)

- Requesting share download limit capability of files_downloadlimit app.
- Augmented WebDAV metadata requests and responses with optional share download limits.
- Extended NextcloudKit with methods to manage share download limits via OCS.

Signed-off-by: Iva Horn <[email protected]>

* Recommended files (#115)

* 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]>

* improvements

Signed-off-by: Marino Faggiana <[email protected]>

* Allow setting custom destinations in chunked upload (#116)

* Allow setting a different destination file name from local file name in chunked upload

Using macOS File Provider APIs we rely on the system to provide us with
a URL pointing the an item's local modified contents. This URL last path
component is a UUID and does not represent the expected file name of the
item.

The current API of uploadChunk presents a problem because it assumes the
local content file's filename is the same as what will eventually be
uploaded to the server. This commit addresses the issue by allowing
users of this function to provide a destination file name which will
replace the provided local filename, if used.

Signed-off-by: Claudio Cambra <[email protected]>

* Make file chunks output directory customisable

Currently the chunking procedure produces file chunks within the
directory of the input file. However, this fails in cases where the
directory is read-only.

This can be fixed by allowing the chunked files output directory to be
changed

Signed-off-by: Claudio Cambra <[email protected]>

---------

Signed-off-by: Claudio Cambra <[email protected]>

* added httpMaximumConnectionsPerHost

Signed-off-by: Marino Faggiana <[email protected]>

* httpMaximumConnectionsPerHost

Signed-off-by: Marino Faggiana <[email protected]>

* appendSession

Signed-off-by: Marino Faggiana <[email protected]>

* cod

Signed-off-by: Marino Faggiana <[email protected]>

* Added feature to get download limits explicitly via OCS API.

Signed-off-by: Iva Horn <[email protected]>

* Update FileNameValidator.swift

* Make NextcloudKit Swift 6 compatible (#119)

* Define NKDownloadLimit as a sendable struct

Signed-off-by: Claudio Cambra <[email protected]>

* Define NKFile as a sendable struct

Signed-off-by: Claudio Cambra <[email protected]>

* Define NKSession as a sendable struct

Signed-off-by: Claudio Cambra <[email protected]>

f

Signed-off-by: Claudio Cambra <[email protected]>

* Define UTTypeConformsToServer as a sendable struct

Signed-off-by: Claudio Cambra <[email protected]>

* Define NKError as a sendable, equatable struct

Signed-off-by: Claudio Cambra <[email protected]>

* Convert ThreadSafeArray into a sendable struct

This also modifies the behaviour of its methods to be sendable compliant
by using locking instead of a dispatch queue

Signed-off-by: Claudio Cambra <[email protected]>

* Make FileAutoRenamer Sendable compliant

Signed-off-by: Claudio Cambra <[email protected]>

f autorenamer

Signed-off-by: Claudio Cambra <[email protected]>

f autorenamer

Signed-off-by: Claudio Cambra <[email protected]>

f autorenamer 3

Signed-off-by: Claudio Cambra <[email protected]>

* Make FileNameValidator Sendable compliant

Signed-off-by: Claudio Cambra <[email protected]>

f filenamevalidator

Signed-off-by: Claudio Cambra <[email protected]>

* Fix copyright header in NSLock extension

Signed-off-by: Claudio Cambra <[email protected]>

* Use self createFolder rather than going for shared instance

Signed-off-by: Claudio Cambra <[email protected]>

* Make NextcloudKitDelegate protocol sendable

Signed-off-by: Claudio Cambra <[email protected]>

* Make NKBackground a final class

Signed-off-by: Claudio Cambra <[email protected]>

* Make NextcloudKitSessionDelegate conform to sendable

Signed-off-by: Claudio Cambra <[email protected]>

* Use the appropriate nkCommonInstance in NKSession initialiser

Signed-off-by: Claudio Cambra <[email protected]>

* Make nkCommonInstance mutable in NextcloudKit

Signed-off-by: Claudio Cambra <[email protected]>

* Only provide shared NextcloudKit instance on swift <6

Signed-off-by: Claudio Cambra <[email protected]>

f shared nckit

Signed-off-by: Claudio Cambra <[email protected]>

* When using swift 6, use a task to retrieve screen scale on iOS

Signed-off-by: Claudio Cambra <[email protected]>

* Make NKFileProperty a sendable struct

Signed-off-by: Claudio Cambra <[email protected]>

f nkfileproperty

Signed-off-by: Claudio Cambra <[email protected]>

* Convert NKCommon into a sendable struct

This required modifying the caches into standard maps. Unfortunately
NSCache is not sendable compliant. I have made the changes take effect
only when building with Swift 6

Signed-off-by: Claudio Cambra <[email protected]>

* Fix whitespace handling in FileAutoRenamer

Signed-off-by: Claudio Cambra <[email protected]>

* Remove leading dot for hidden file filenames in autorenamer

This is seemingly expected by the autotests

Signed-off-by: Claudio Cambra <[email protected]>

---------

Signed-off-by: Claudio Cambra <[email protected]>
Co-authored-by: Milen Pivchev <[email protected]>

* Add static/refactor

Signed-off-by: Milen Pivchev <[email protected]>

* NextcloudKitDelegate

Signed-off-by: Marino Faggiana <[email protected]>

* change Name to NKMonitor

Signed-off-by: Marino Faggiana <[email protected]>

* Added NKInterceptor

Signed-off-by: Marino Faggiana <[email protected]>

* Interceptor

Signed-off-by: Marino Faggiana <[email protected]>

* Interceptor

Signed-off-by: Marino Faggiana <[email protected]>

* interceptor

Signed-off-by: Marino Faggiana <[email protected]>

* cleaning

Signed-off-by: Marino Faggiana <[email protected]>

* Interceptor

Signed-off-by: Marino Faggiana <[email protected]>

* INterceptor

Signed-off-by: Marino Faggiana <[email protected]>

* sendable

Signed-off-by: Marino Faggiana <[email protected]>

* test

Signed-off-by: Marino Faggiana <[email protected]>

* cleaning

Signed-off-by: Marino Faggiana <[email protected]>

* checkUnauthorized

Signed-off-by: Marino Faggiana <[email protected]>

* debug

Signed-off-by: Marino Faggiana <[email protected]>

* X-NC-CheckUnauthorized

Signed-off-by: Marino Faggiana <[email protected]>

* test

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]>

* common (#121)

* fix

Signed-off-by: Marino Faggiana <[email protected]>

* cod

Signed-off-by: Marino Faggiana <[email protected]>

---------

Signed-off-by: Marino Faggiana <[email protected]>

* cleaning

Signed-off-by: Marino Faggiana <[email protected]>

* cleaning

Signed-off-by: Marino Faggiana <[email protected]>

* added checkUnauthorized options

Signed-off-by: Marino Faggiana <[email protected]>

* cod

Signed-off-by: Marino Faggiana <[email protected]>

* fix

Signed-off-by: Marino Faggiana <[email protected]>

* cleaning

Signed-off-by: Marino Faggiana <[email protected]>

* cod

Signed-off-by: Marino Faggiana <[email protected]>

* setupLog

Signed-off-by: Marino Faggiana <[email protected]>

* dependencies version updated

Signed-off-by: Marino Faggiana <[email protected]>

* improved code

Signed-off-by: Marino Faggiana <[email protected]>

* improved

Signed-off-by: Marino Faggiana <[email protected]>

* cleaning

Signed-off-by: Marino Faggiana <[email protected]>

* debugPrint

Signed-off-by: Marino Faggiana <[email protected]>

* debugprint

Signed-off-by: Marino Faggiana <[email protected]>

* cod

Signed-off-by: Marino Faggiana <[email protected]>

* log

Signed-off-by: Marino Faggiana <[email protected]>

* cleaning

Signed-off-by: Marino Faggiana <[email protected]>

* LOG (#123)

* cod

Signed-off-by: Marino Faggiana <[email protected]>

* cod

Signed-off-by: Marino Faggiana <[email protected]>

---------

Signed-off-by: Marino Faggiana <[email protected]>

* added request delagate

Signed-off-by: Marino Faggiana <[email protected]>

* cleaning

Signed-off-by: Marino Faggiana <[email protected]>

* protocol NextcloudKitDelegate optional

Signed-off-by: Marino Faggiana <[email protected]>

* added getRequestBodyFileExists

Signed-off-by: Marino Faggiana <[email protected]>

* public

Signed-off-by: Marino Faggiana <[email protected]>

* fix

Signed-off-by: Marino Faggiana <[email protected]>

* init

Signed-off-by: Marino Faggiana <[email protected]>

* Interceptor & Monitor Improved   (#126)

* cod

Signed-off-by: Marino Faggiana <[email protected]>

* cod

Signed-off-by: Marino Faggiana <[email protected]>

* code

Signed-off-by: Marino Faggiana <[email protected]>

* fix

Signed-off-by: Marino Faggiana <[email protected]>

* improvements

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]>

* Improved code

Signed-off-by: Marino Faggiana <[email protected]>

* Improvements

Signed-off-by: Marino Faggiana <[email protected]>

* Upload fix multisession (#129)

* fix

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: Login poll without cached responses.

Signed-off-by: Milen Pivchev <[email protected]>

* Assistant V2

Signed-off-by: Milen Pivchev <[email protected]>

Fix compile

Signed-off-by: Milen Pivchev <[email protected]>

Refactor

Signed-off-by: Milen Pivchev <[email protected]>

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]>

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]>

Refactor

Signed-off-by: Milen Pivchev <[email protected]>

Finish

Signed-off-by: Milen Pivchev <[email protected]>

Compliance

Signed-off-by: Milen Pivchev <[email protected]>

PR fixes

Signed-off-by: Milen Pivchev <[email protected]>

Assistant API v2 (#124)

* WIP

Signed-off-by: Milen Pivchev <[email protected]>

* Fix compile

Signed-off-by: Milen Pivchev <[email protected]>

* Refactor

Signed-off-by: Milen Pivchev <[email protected]>

* 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]>

* 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]>

* Refactor

Signed-off-by: Milen Pivchev <[email protected]>

* Finish

Signed-off-by: Milen Pivchev <[email protected]>

* Compliance

Signed-off-by: Milen Pivchev <[email protected]>

* PR fixes

Signed-off-by: Milen Pivchev <[email protected]>

* Upload fix multisession (#129)

* fix

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: Login poll without cached responses.

Signed-off-by: Milen Pivchev <[email protected]>

* Linter

Signed-off-by: Milen Pivchev <[email protected]>

---------

Signed-off-by: Milen Pivchev <[email protected]>
Signed-off-by: Marino Faggiana <[email protected]>
Co-authored-by: Marino Faggiana <[email protected]>
Co-authored-by: Marino Faggiana <[email protected]>

---------

Signed-off-by: Marino Faggiana <[email protected]>
Signed-off-by: Marino Faggiana <[email protected]>
Signed-off-by: Claudio Cambra <[email protected]>
Signed-off-by: Milen Pivchev <[email protected]>
Signed-off-by: Iva Horn <[email protected]>
Co-authored-by: Marino Faggiana <[email protected]>
Co-authored-by: Marino Faggiana <[email protected]>
Co-authored-by: Claudio Cambra <[email protected]>
Co-authored-by: Milen Pivchev <[email protected]>
Co-authored-by: Andy Scherzinger <[email protected]>
Co-authored-by: Iva Horn <[email protected]>

* cod

Signed-off-by: Marino Faggiana <[email protected]>

* remove unused parameter

Signed-off-by: Marino Faggiana <[email protected]>

---------

Signed-off-by: Marino Faggiana <[email protected]>
Signed-off-by: Marino Faggiana <[email protected]>
Signed-off-by: Claudio Cambra <[email protected]>
Signed-off-by: Milen Pivchev <[email protected]>
Signed-off-by: Iva Horn <[email protected]>
Co-authored-by: Marino Faggiana <[email protected]>
Co-authored-by: Marino Faggiana <[email protected]>
Co-authored-by: Claudio Cambra <[email protected]>
Co-authored-by: Milen Pivchev <[email protected]>
Co-authored-by: Andy Scherzinger <[email protected]>
Co-authored-by: Iva Horn <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants