Giter Site home page Giter Site logo

nextcloud / ios Goto Github PK

View Code? Open in Web Editor NEW
1.8K 107.0 835.0 941.48 MB

πŸ“± Nextcloud iOS App

Home Page: https://itunes.apple.com/us/app/nextcloud/id1125420102

License: GNU General Public License v3.0

Objective-C 8.03% Swift 91.72% Rich Text Format 0.21% Ruby 0.01% Shell 0.04%
nextcloud ios open-source hacktoberfest

ios's Introduction

Nextcloud iOS app

Releases Build SwiftLint irc

Demo of the Nextcloud iOS files appWidget of the Nextcloud iOS files app

Demo of the Nextcloud iOS files app

Check out https://nextcloud.com and follow us on twitter.com/nextclouders

How to contribute

If you want to contribute to Nextcloud, you are very welcome:

Contribution Guidelines & License

GPLv3 with Apple app store exception.

Nextcloud doesn't require a CLA (Contributor License Agreement). The copyright belongs to all the individual contributors. Therefore we recommend that every contributor adds following line to the header of a file, if they changed it substantially:

@copyright Copyright (c) <year>, <your name> (<your email address>)

Please read the Code of Conduct. This document offers some guidance to ensure Nextcloud participants can cooperate effectively in a positive and inspiring atmosphere, and to explain how together we can strengthen and support each other.

More information how to contribute: https://nextcloud.com/contribute/

Start contributing

You can start by forking this repository and creating pull requests on the develop branch. Maybe start working on starter issues.

Easy starting points are also reviewing pull requests

Xcode 15 Project Setup

Dependencies

After forking a repository you have to build the dependencies. Dependencies are managed with Carthage version 0.38.0 or later. Run

carthage update --use-xcframeworks --platform iOS

to fetch and compile the dependencies.

In order to build the project in Xcode you will also need a file GoogleService-Info.plist at the root of the repository which contains the Firebase configuration. For development work you can use a mock version found here.

Creating Pull requests

DCO Signoff

Nextcloud enforces the Developer Certificate of Origin (DCO) on Pull Requests. It requires your commit messages to contain a Signed-off-by line with an email address that matches your GitHub account.

How to Sign off

The DCO is a way for contributors to certify that they wrote or otherwise have the right to submit the code they are contributing by adding a Signed-off-by line to commit messages.

My Commit message

Signed-off-by: Random Contributor <[email protected]>

Git even has a -s | --signoff command line option to append this to your commit messages automatically.

Support

If you need assistance or want to ask a question about the iOS app, you are welcome to ask for support in our Forums. If you have found a bug, feel free to open a new Issue on GitHub. Keep in mind, that this repository only manages the iOS app. If you find bugs or have problems with the server/backend, you should ask the Nextcloud server team for help!

TestFlight

Do you want to try the latest version in development of Nextcloud iOS ? Simple, follow this simple step

Apple TestFlight

Testing

Note: If a Unit or Integration test exclusively uses and tests NextcloudKit functions and components, then write that test in the NextcloudKit repo. NextcloudKit is used in many other repos as an API, and it's better if such tests are located there.

Unit tests:

There are currently no preresquites for unit testing that need to be done. Mock everything that's not needed.

Integration tests:

To run integration tests, we need a docker instance of a Nextcloud test server. The CI does all this automatically, but to do it manually:

  1. Run docker run --rm -d -p 8080:80 ghcr.io/juliushaertl/nextcloud-dev-php80:latest to spin up a docker container of the Nextcloud test server.
  2. Log in on the test server and generate an app password for device. There are a couple test accounts, but admin as username and password works best.
  3. Build the iOS project once. This will generate an .env-vars file in the root directory. It contains env vars that the project will use for testing.
  4. Provide proper values for the env vars inside the file. Here is an example:
export TEST_SERVER_URL=http://localhost:8080
export TEST_USER=nextcloud
export TEST_PASSWORD=FAeSR-6Jk7s-DzLny-CCQHL-f49BP
  1. Build the iOS project again. If all the values are set correctly you will see a generated file called EnvVars.generated.swift. It contains the env vars as Swift fields that can be easily used in code:
/**
This is generated from the .env-vars file in the root directory. If there is an environment variable here that is needed and not filled, please look into this file.
 */
 public struct EnvVars {
  static let testUser = "nextcloud"
  static let testPassword = "FAeSR-6Jk7s-DzLny-CCQHL-f49BP"
  static let testServerUrl = "http://localhost:8080"
}
  1. You can now run the integration tests. They will use the env vars to connect to the test server to do the testing.

UI tests

UI tests also use the docker server, but besides that there is nothing else you need to do.

Snapshot tests

Snapshot tests are made via this library: https://github.com/pointfreeco/swift-snapshot-testing and these 2 extensions:

  1. https://github.com/doordash-oss/swiftui-preview-snapshots - for creating SwiftUI snapshot tests via previews.
  2. https://github.com/alexey1312/SnapshotTestingHEIC - makes snapshot images HEIC instead of PNGs for much reduced size.

Snapshot tests are a great way to test if UI elements are consistent with designs and don't break with new commits, but they can be very finicky and the smallest change can cause them to fail. Keep in mind:

  • For SwiftUI snapshot tests, It's always a good idea to utilize previews, as they do not depend on device/app state and it has less chances to fail due to wrong state.

  • For UIKit snapshot tests, try to include mock dependencies to always make sure the UI is rendered the same way. Even a text change can cause the tests to fail.

ios's People

Contributors

andyscherzinger avatar astrairidiumitaly avatar blackivory86 avatar bzzim avatar castillo92 avatar comradekingu avatar dogra25130 avatar fservida avatar ivansss avatar karan911 avatar lukasreschke avatar marinofaggiana avatar mario avatar mcp4nth3r avatar morrisjobke avatar mpivchev avatar nextcloud-bot avatar nickvergessen avatar onehappycat avatar philippeweidmann avatar rakekniven avatar rygen avatar schiessle avatar theunrealgeek avatar thgoebel avatar thisisthefoxe avatar tsi-amrutwaghmare avatar valdnet avatar wolframroesler avatar zcw159357 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ios's Issues

question: Deleting local copy images without deleting thumbnails from cache

Hi!

I have a question.
When i open picture/audiofile/anything in nextcloud ios app it is downloaded and placed in app's cache. Thumbnails are in cache too - which is nice!
Now question... Is there a way to clear cache of local images/audio files keeping thumbnails? I.e. i would like to delete downloaded "local" copies of the files without regenerating thumbnails for 5k+ image files.

Thanks a lot for any help!

Display the currently used and total quota

The Android app shows this in the bottom of the sidebar:

bildschirmfoto 2017-02-05 um 16 40 07

@nextcloud/designers Do you have an idea where to put this in the iOS app? Should we maybe streamline the UI of both apps and introduce a sidebar on iOS as well to also show all the other categories?

Filter files by "Activity", "Shared", "Favorites"

We maybe should here as well look into the activities view, because this is the only way, how an external app can access this information.

The idea of this is to have a common view of the recent actions that happened to your files/nextcloud account.

@jancborchardt already did a rough mockup of this view:

img_20170124_113357

@jancborchardt Should this be the same on iOS? I think so.

@marinofaggiana What do you think?

@karlitschek @oparoz Does that make sense?

@nextcloud/designers @mario Feel free to comment on this as well :)

Documentation

Call for your support !
Help us write the documentation of Nextcloud iOS

Thanks !

Disable encryption feature per server

It should be possible to disable the encryption feature of the iOS client from the server, because it would render those files unusable from other devices/web.

I would propose that we expose this as a capabilities feature on the server, where the server announces to the iOS app to not use encryption and then the iOS app hides all those UI elements.

cc @karlitschek @rullzer @marinofaggiana Does that make sense to you?

Server version shows wrong version

In the App [2.14 (00015)], under settings, server version shows as 9.1.1.5 when server version is actually Nextcloud 10.0.1 (stable).

Plain text files not interpreted as Unicode

When uploading a plain text file encoded as Utf8 to a Next Cloud instance and opening it in the app, it gets partially unreadable.

The default encoding for text files should be Utf8.

Dynamic menu items

Same as the Android version, but for iOS: nextcloud/android#555

Capabilities API would expose menu items to be added to the sidebar. The menu items would simply open a web page, and the API would expose title and the URL. Typically stuff like "Help": "link to help page" and "About us": "link to about us page".

We are currently planing the API and then I will update this ticket here with the details.

@jancborchardt Maybe we need a similar side bar for all the categories on the iOS side too. Be prepared that we need some UX help for this one, because currently I have no idea where to put those entries in the current app.

@marinofaggiana Feel free to suggest something.

Label of cancel option is way too small

See red box on top right.
German word for "Cancel" is "Abbrechen". Given space for label is too small. Shortening function makes is unreadable for beginners. Same for other languages e.g. french AFAIK.

2016-10-01 18-33-23 5689

Manage tags

As we've tagging now in the Nextcloud Webgui it would be great to be able to tag from the app.

Allow to create new folder when uploading files

Steps to reproduce:

  1. Select photos you want to upload
  2. Choose to pass them to Nextcloud
  3. Navigate to destination folder

Here I wanted to create a new folder to place the files. I don't have such a button, the owncloud ios-client could do this and I used it often.

Multiple files upload at the same time

Hello

I have a idea, multiple images upload to server at same time for mobile app, like OneDrive app
Is it possible?

Photos one by one uploading and It can take a long time. For this reason, application can be upload photos more than one, maybe 5 or 6 photos uploading at the same time.

#793 - ownCloud

Disable IOS client side app encryption

i see there are some new encryption stuff in the IOS nextcloud app.

i cant find any way to go around that, i dont understand that anyone want this, sharing phone encrypted files to you computer results in non readable data, so nextcloud is reduced to a online vault.

So the problem is that current IOS app has NO possibility to deactivate this encryption.

Wrong user agent is used

Nextcloud servers assume the the iOS app uses a user agent that matches the following Regex:
https://github.com/nextcloud/server/blob/d907666232468503ab6ed2bdac44b6500be2beb6/lib/public/IRequest.php#L79-L79

const USER_AGENT_CLIENT_IOS = '/^Mozilla\/5\.0 \(iOS\) ownCloud\-iOS.*$/';

But it seems like the user agent was changed to "Nextcloud-iOS":
https://github.com/nextcloud/ios/blame/47107a9116e162701a38bed69999efe0528abd7c/iOSClient/Utility/CCUtility.m#L382-L388

This means that the app broke the server's compatibility. We can of course adjust the user agent regex, but please don't change it anymore without notifying us.
I also thought that we talked about this in the beginning, but maybe that was android only.

Support adding folders as favorites (including multiple files) to make them offline available

As a user of the nextcloud ios app
I would like to add folders as favorites
In order to make multiple files offline available

Currently I'm able to add only single files as favorites to make them offline available (swipe to the left, "More", "Add to favorites"). If I have a folder with a huge amount of pictures and I would like to have those pictures offline available, I have to select each file separably and star it - that's very effortful.

No insertion possible in database

Hi,
When nextcloud sms try to sync with the server, I got an HTTP 500 error and in the nextcloud.log:
Doctrine\DBAL\Exception\DriverException: An exception occurred while executing 'INSERT INTO oc_ocsms_smsdatas (user_id, added, lastmodified, sms_flags, sms_date, sms_id,sms_address, sms_msg, sms_mailbox, sms_type) VALUES (?,?,?,?,?,?,?,?,?,?)' with params ["pierre", "2017-01-23 12:32:54", "2017-01-23 12:32:54", "11", "1483619299547", 14615, "+00123456789", "Oui et toi \ud83d\ude0a", 0, 1]: SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xF0\x9F\x98\x8A' for column 'sms_msg' at row 1

I've check the sms_msg column definition and it is as follow:
image

Thus none of the both apps (client side and server side) are working...

Pierre.

Selected Item count shows wrong number after Selecting

If you select some files and then deselect them, the counter of the selected files will not update.

P.S as you can see in the screenshot the description about last update time is wrong, instead of "1 hours ago" it should be "1 hour ago".

2016-12-20_11-30-56_0481
2016-12-20_11-31-04_0482

New branching Model (git-flow)

Maybe I have overseen it, but currently there is no separation of the production and the development branch.

I would suggest to use a branching modle like git-flow to separate the production release from the development branch. This make it easier to publish new releases only containing fixes (hotfoots on master) and continue pushing new features forward.

I used it in a big project before and it worked quite well to manage developing new feature and fixing existing bugs.

Support for two factor (backup codes, totp, sms, ...)

Is it planned to add two factor support to the iOS app, too?
I am using Nextcloud 11 Beta v2 with TOTP and U2F plugins, but can't login in via the app. Accounts without two factor authentication are able to login fine.
I believe there is currently no support for account with enabled two factor measures?

I've seen other services (like PSN) to enable two factor support for unsupported devices by adding the two factor code after the password.

Thanks,
Tim

s/OWNCLOUD/NEXTCLOUD/ at ios-intro localization files :)

Search Option

Waiting for this feature since a long time, there should be a search bar at the top which will allow users to directly search for their files instead of manually scrolling through the list..

Allow creation of non-encrypted notes

The app currently allows us to create and modify encrypted notes, but these can only be edited or viewed on the device.

It would be useful if the application would allow the creation, and modification, of non-encrypted notes too - which could then be manipulated on other synced devices.

I use the iOS app every day and find it a pleasure to use. My thanks go out to those who contribute to this project.

[UX] Registration should allow bare hostnames, not require protocol

During account setup, the iOS client for Nextcloud asks for a URL. If the user types just the hostname (e.g., cloud.example.org), then they are told "unsupported URL" and the field is cleared.

Multiple changes to the UX could be done here:

  • Nextcloud/iOS should detect no protocol in the URL and try https, first, then http.
  • In the case that the hostname is wrong, leave the hostname in the field for the user to edit. It's more likely they misspelled it or used the wrong TLD (.com instead of .org).
  • The URL field could also be pre-filled with https:// when the user selects the empty field.
  • The error message should specify "The URL should start with http:// or https://"
  • The field should use the URL keyboard.

Crash on load

App was updated automatically on 12/12/2016. Open app, it prompts for security code (as it should), halfway through typing it in, it freezes for several seconds, then dumps me to the iOS home screen.

App is still running in the background and I can switch to it, type in my security code, and get to the top-level folder list. I can see I have 5 files that need to upload. After a second or two, app dumps me to iOS home screen, but it is still running in the background.

iOS 10.1

I'm now updating to iOS 10.2.

File search

Implement file search which would be similar to what the server frontend does.

The API can be found at nextcloud/server#676 and is basically the same as nextcloud/android#558

@nextcloud/designers How should this look like on iOS. Maybe @jancborchardt and @mario can help here.

Best would be to immediately filter the current view on the search term and then show the search results as they are received from the server. Right, @jancborchardt?

The search results should show a list with

  • name
  • folder name
  • when clicking on it it should directly open this file (just like clicking on it in the file list)
  • long clicking on the file should show "go to folder"

as reference the current web view:

bildschirmfoto 2017-01-11 um 14 52 07

cc @marinofaggiana

@oparoz Anything I forgot?

Rename pictures on upload

It should be possible to rename pictures by my own schemata.
I use the exifdata a.e.IMG%Y%M%D_%H%M%S_ with Photosync on ios.
This comes years ago from Android and it keeps my data consistent till now.

Would be great to have this option.
This makes it possible to put VACATIONS_FRANCE%Y%M%D_%H%M%S_ etc on it

Share a link without password protection

Currently it is only possible to share a link with password, this is really annoying since everytime I want to send a link to a friend I have to also send them a 8 charachter long password with it. Is it possible to make this also available without password protection?

Increase visibility of File actions

Currently to access the actions for a file or a folder you have to swipe left. At first you see a red "Delete" button and then once you swipe a bit further you see a grey "More" button.

I was in trouble finding these "More" actions for a long while because:

  • When I swiped left I saw a red "Delete" so I stopped swiping left since on some apps with a similar functionality swiping further and letting go will actually delete the file.

2016-12-20 13-32-13 0682

  • When I swiped right it did nothing

  • When I pressed for a long time it did nothing.

So as a result I thought the app was just lacking all the extra functionalities. It wasn't until much later that I actually found the "More" button.

2016-12-20 13-33-27 0683

I suggest to improve this by either making swipe right reveal the "More". Or making a long press go straight into that function. Or both.

Cheers!

User information screen

There should be a view in the iOS that holds all the user information available on the server.

Maybe the best place for this is in "Settings" -> "Cloud Account". There is already a proposal of how this looks on the Android side, maybe we adopt this for iOS:

device-2017-02-08-231317

cc @nextcloud/designers for ideas how to do this. maybe @MariusBluem also have a nice idea how this could look like or has examples of how other apps handle this.

@marinofaggiana Or maybe you have an idea for this already in mind :)

Share photos from the photo view via link

  • open the photo view from the bottom menu
  • click on a photo
  • there is a button to share via the installed apps (FB, Twitter, Instagram, ...) but there is no way to share this photo via a Nextcloud share link

Expected: Also have an option to share via Nextcloud link sharing

During upload all pending items should be shown

  • take multiple photos (>10)
  • go to the Nextcloud app - it shows the count in the icon and inside the app in the lower left
  • go into the photos folder / or the upload panel (swipe down from header)

Actual behaviour

  • only 2 files are shown that are pending for upload

Expected behaviour

  • all pending files should be shown

cc @marinofaggiana @jancborchardt

Inconsistent gallery behavior between web GUI and client

Reproduce:

  1. add an external storage with photos
  2. open web browser and go to the gallery
  3. you will see that external storage folder with previews
  4. open ios client and go to the photo tab
  5. you can only see your local photos

It seems that the photo tab on ios is not a full-fledged gallery like the web version.

Expected:
web/ios/android, all the same gallery.

Client version :2.16 (00012)

Extracting Frameworks/Libraries

I saw, that this has already been started. I would suggest to extract frameworks from the main iOS app project into dependencies managed by cocoa pods or carthage (personally I prefer carthage, but this is just my personal preference).

Is there a concrete plan how to handle the implementation of the business logic of the app (accessing the server, syncing files, etc.)? I would found it nice, if this can be moved into a framework, which can be used in other apps (not only the library to access the server API, but also the management of the local state).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.