Giter Site home page Giter Site logo

nextcloud / windows-universal Goto Github PK

View Code? Open in Web Editor NEW
59.0 12.0 34.0 11.15 MB

πŸ“± Nextcloud Windows Mobile app

Home Page: https://www.microsoft.com/store/apps/9nblggh532xq

License: Mozilla Public License 2.0

C# 98.70% CSS 0.55% JavaScript 0.19% HTML 0.54% Batchfile 0.03%
nextcloud windows windows-uwp

windows-universal's Introduction

Nextcloud Windows Mobile App

Build status Gitter

This is the Nextcloud app allowing you to access all your files on Windows Mobile (...and UWP coming soon).

Why is this so useful?

  • Easy, modern interface
  • Upload your files to your Nextcloud
  • Download files from your Nextcloud

And in the coming versions:

  • Move and rename files and folders
  • Share your files and folders with others
  • Manage shares
  • Download directories as ZIP files
  • Upload whole directories
  • Monitor selected directories and upload new files in the background
  • Synchronize selected directories in the background
  • Instantly upload photos and videos taken by your device
  • Managing more than one user account / Nextcloud server (Multi-account support)

Issues

Please report all issues over here: https://github.com/nextcloud/windows-universal/issues

Translation / Localization

Do you want the Nextcloud app in your language?
Help translating the app on Transifex
Make sure you are logged in to your Transifex account, otherwise you will get a 403 error page asking you to log in first. 😏

❗ We kindly ask you to only change the English strings /Strings/en/Resources.resw within the repository ❗

All other languages are translated on Transifex. The translated files are merged automatically by our [tx-robot] every night.

Screenshots

Credits

The Nextcloud App relies on, or was inspired by, the following projects:

windows-universal's People

Contributors

altima avatar comradekingu avatar decatec avatar hanzei avatar hivesolution avatar mariusbluem avatar morrisjobke avatar nextcloud-bot avatar nickvergessen avatar rakekniven avatar scherke avatar sunbox avatar thescientist 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

Watchers

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

windows-universal's Issues

Download of larger files fails

If you download a larger file, it breaks up shortly after it started to download. So the "downloaded" file will only have some kilobyte.

UI/UX design review and enhancements

This is the issue to provide and discuss some design enhancements.

There are some things in Windows (Mobile), you should be aware of.
Windows Mobile differs from other mobile OS by the way it provides consistent look and feel across all apps, it shouldn't matter if it is a pre-installed or a custom one.
Espacially if the app is a productive app, like this one. 😏

Microsoft itself has some notes about Design & UI here: https://developer.microsoft.com/en-us/windows/apps/design
(Microsoft Design Language principles: https://www.microsoft.com/en-us/design/principles)

This will bring some limitations regarding the design of the app. Basically, every Windows Mobile app should use the same font, icons and the Windows theming. I will explain them now.

Font

The font you should use in Windows apps is called Segoe UI.
There's a list of available fonts and some notes over here: https://msdn.microsoft.com/en-us/windows/uwp/style/fonts

Icons

Windows provides a own icon set. It's called Segoe MDL2 icons.

If you need to design additional icons (not included in the default icon set), please design them so they look coherent with the Segoe MDL2 icons.
Please provide the new icons as SVG graphics.

Sizes

The sizes are defined in an device-independent unit called DIP (Device-independent pixel).
As a rule of thumb, the defined sizes should always be dividable by 4. For example, the default CommandBar has a height of 48 DIP.
You can read more about that here: https://msdn.microsoft.com/en-us/library/windows/desktop/ff684173(v=vs.85).aspx

Colors (theming)

Windows (Mobile) offers the user two different kinds of theming, a light theme (more or less white) and a dark theme (more or less black).
The user can also choose a accent color. The nextcloud windows app should use these pre-defined colors.

Many apps are only using the company color on their splash screen. I've done this on the splash screen and the login screen.

Downloads

Change App's Name to "Nextcloud"

We should consider about renaming the application to "Nextcloud". I think the "App" is not needed there, because everybody shopping in Windows Store does know that he is searching for apps 😜 ... this would also makes the whole thing more "official" ;)

Nextcloud App -> Nextcloud

@SunboX

Wrong group header when sorting for size

When items are grouped by size (asc or desc), the group header will always be 'B'.

We shouldn't use group headers here or use group headers with size ranges (<1MB, <10MB, etc.).

Error reports

πŸ”₯ This is a general issue to track automated error reports

ETag in file details

Why is the ETag shown in the details of a file? Imho that's not an info the user cares about.

Shouldn't it be removed?

Investigate, SSL server connection with self signed certificates

Investigate, if there's a way to connect (HTTPS) to a server that is setup with a self signed SSL certificate.

current behavior

By now, the app will show a message that the server is unreachable.

if allowing self signed certificates is not possible

If there is now way to allow self signed certificates, the app should show a more clear message, like

This server is using a self signed certificate. Sadly we can not connect to it.

user story

https://help.nextcloud.com/t/server-not-found-from-windows-10-mobile-app/6669

Change App's Meta on Store

  • Since the repository has changed, we should change the links given in the app's description on Windows Store πŸ˜…

  • Maybe we could also remove the stuff about that this app is "unofficial" ... its maintained in an official community repository πŸ˜‰ (... @karlitschek for "legal" stuff)

  • Consider about removing the "#" and "##" - it does not seem to support Markdown 😁

  • Change Support link from Gitter to GitHub Issues (...which makes more sense, since we are able to reproduce and organize bugs and issues here better)

What do you think? @SunboX

Clear PasswordVault when resetting the app

After app reset you can log in with any password as long as server URl and user name are the same as before the reset.

When resetting the app we should call PasswordVault.Remove.

Error after login "Invalid query, please check the syntax."

I'm getting this error from the app after I login in the application:
"Invalid query, please check the syntax. API specifications are here: http://www.freedesktop.org/wiki/Specifications/open-collaboration-services. DEBUG OUTPUT:"

The steps to reproduce it:

  1. login into the app
  2. close the app
  3. Open the app again and you get the error

I'm not a developer, but I just leave my prediction here (maybe it saves you time). The reason for the error seems to be because of GetUserAttributes method in NextCloudClient.cs, for some reason the App is sending a GET request to https://demo.nextcloud.com/ocs/v1.php/cloud/users/Test which returns this error.

 public async Task<User> GetUserAttributes(string username)
        {
            var response = await DoApiRequest(
                "GET",
                "/" + GetOcsPath(OcsServiceCloud, "users") + "/" + username
                );

            var responseStr = response;

            return GetUser(responseStr);
        }

App version: Nexcloud App from master branch commit 37cbc70
Server: demo.nexcloud.com

Screenshot of error:
wp_ss_20161130_0002 1

Notifications & Live Tile based on Activity Stream

Idea for a feature in the future:
Update Tile and notifications based on (some) activities on the account.
Especially something like

  • User x shared a file with you
  • New appointment in your calendar
  • ...

User authentication on app start

Other apps like OneDrive have a feature that the user has to authenticate by pin/Windows Hello at app start. Makes sense because the app shows personal data.

Maybe it's a good idea to implement such a feature. The user may switch authentication on/off in the settings.

Make included libraries universal

To make this app a universal app (UWP) we need to fix the included libraries WebDavClient and NextcloudClient. Both use the Windows.Web.Http.HttpClient that is platform dependent.

I had to use the HttpClient, because Windows Mobile caches the uploading files while it is uploading them. HttpClient accepts a HttpBaseProtocolFilter object that has a CacheControl.WriteBehavior property you can set to HttpCacheWriteBehavior.NoCache.

At first I used System.Net.WebRequest, which would be universal available. I tried to get the upload progress like this:

var uploadFileRequest = WebRequest.Create(_uri) as HttpWebRequest;
uploadFileRequest.Method = "PUT";
uploadFileRequest.ContentType = _file.ContentType;
uploadFileRequest.Headers["Pragma"] = "no-cache";
uploadFileRequest.Headers["Content-Length"] = stream.Size.ToString();
var stream = await _file.OpenAsync(FileAccessMode.ReadWrite);
using (var inputStream = stream.GetInputStreamAt(0))
{
    using (var dataReader = new Windows.Storage.Streams.DataReader(inputStream))
    {
        const int chunkSize = 256;
        var req = await uploadFileRequest.GetRequestStreamAsync();
        do
        {
            var read = await dataReader.LoadAsync(chunkSize);
            var buffer = new byte[read];
            dataReader.ReadBytes(buffer);
            await req.WriteAsync(buffer, 0, (int)read);
            await req.FlushAsync(); // flushing is required or else we jump to 100% very fast
            BytesSend += (int)read;
        } while (BytesSend < BytesTotal);
        await uploadFileRequest.GetResponseAsync();
        var response = (HttpWebResponse) await uploadFileRequest.GetResponseAsync();
        var result = new HttpResponseMessage(response.StatusCode);
        result.Content = new StreamContent(response.GetResponseStream());
    }
}

It will show a progress, but after it reaches 100% it takes more or less the same time to finish. This is because Windows Mobile caches the upload stream while it get's send. So you can only measure the time taken to write this file stream into the send cache of the OS.

Sadly, by now I have not found any way to implement a correct upload progress as windows universal. Maybe someone has an idea how it would work or want's to try out some things?

The only solution I can imagine for now is to implement a file upload method for every platform. But this isn't very nice. 😏

Settings seemed not persistent anymore

If you re-start the app, you will always get to the login screen again. It seems like the settings are not persistent or there's some issue in the navigation logic.

Implement a dialog that informs about new features

Implement a dialog that informs the user about new features after launching the app first time after update.

The dialog should have a "Recommend" and an "OK" button. Pressing on "Recommend" should open the default share task with the changes as text content. Changes should be defined in the resource bundle with a key "changes_from_1.0.2_to_1.1.0" and the changes separated by new line as value.

Allow the user to disable password storage

Security

Add a checkboxes "remember my login" to the login form that is checked by default. If the user un-checks it, the password should only held in memory as long as the app is running.

The server address and username should always be remembered and the form should be prefilled with them later on.

Moving a folder displays folder to move when selecting a target

Create a folder (e.g. "test").
Next, move this folder. The view to select a target folder is displayed.

Current behavior: The folder to move is shown in the target selection. When selecting this folder and tapping the check mark, nothing happens.

Expected behavior: The folder to move should not be shown in the move target view.

Cancel upload/download of large files by button

The user should be able to cancel the upload or download of files (especially if these are very large).
This can be done by clicking the return key (in the app or on the device).

Maybe there should be a 'Cancel' button for these operations - at least for the upcoming Windows (desktop) app.

Show folder size

Currently, only file sizes are shown in the list. We also should add sizes for folders.

Catch HTTP 503 and show appropriate message

Catch all HTTP 503 status code exceptions and show a message box like "The Service is currently not available. Please try again later."

[AppId]:[36131AndrFiedler.NextcloudApp]
[Type]:[System.Exception]
[ExceptionMessage]:[Error while executing ListAsync (wrong response status code). Expected status code: 207 (MultiStatus); actual status code: 503 (ServiceUnavailable)]
[StackTrace]:[
   at NextcloudApp!<BaseAddress>+0x55462f
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at SharedLibrary!<BaseAddress>+0x36fd1b
   at SharedLibrary!<BaseAddress>+0x36fbe9
   at SharedLibrary!<BaseAddress>+0x36fbb9
   at NextcloudApp!<BaseAddress>+0x5549b5
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at SharedLibrary!<BaseAddress>+0x36fd1b
   at SharedLibrary!<BaseAddress>+0x36fbe9
   at SharedLibrary!<BaseAddress>+0x36fbb9
   at NextcloudApp!<BaseAddress>+0x55ebf5
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at SharedLibrary!<BaseAddress>+0x36fd1b
   at SharedLibrary!<BaseAddress>+0x36fbe9
   at SharedLibrary!<BaseAddress>+0x36fbb9
   at NextcloudApp!<BaseAddress>+0x55d65b
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at SharedLibrary!<BaseAddress>+0x36fd1b
   at SharedLibrary!<BaseAddress>+0x36fbe9
   at SharedLibrary!<BaseAddress>+0x36fbb9
   at SharedLibrary!<BaseAddress>+0x36fb97
   at NextcloudApp!<BaseAddress>+0x566a33
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at SharedLibrary!<BaseAddress>+0x401cbf
   at SharedLibrary!<BaseAddress>+0x3ce85f
]

Fix invalid URL handling in login form

If you put a invalid URL like "http://my.nonexistent.cloud", or one without scheme like "127.0.0.1/nextcloud", in the server address field, the app throws an exception.

Expected behavior

  • The app tries to add a scheme if missing (http://, https://)
  • The app shows an alert like "The server with the address XXX is not reachable"

make the app layout responsive

If the app runs on bigger screens, it should use the available space by showing more information. See Microsft best practices for UWP SplitView apps.

Fix OutOfMemoryException

Some users are getting a OutOfMemoryException. Evaluate the reason (do we create large objects? do we leak memory?).

[AppId]:[36131AndrFiedler.NextcloudApp]
[Type]:[System.OutOfMemoryException]
[ExceptionMessage]:[Arg_OutOfMemoryException]
[StackTrace]:[

]
[InnerException]:[]
[OccurrenceDate]:[2017-01-18 12:33:11 GMT]
[AppTotalRuns]:[8]
[AppRunsAfterLastUpdate]:[7]
[AppVersion]:[1.0.3.0]
[Culture]:[en-US]
[DeviceManufacturer]:[MicrosoftMDG]
[DeviceModel]:[RM-1118_11242]
[DeviceHardwareVersion]:[2.1.6.]
[DeviceFirmwareVersion]:[01078.00053.16236.35016]
[DeviceId]:[37271e4d-5ae7-497a-411e-28bac5133f3f]
[OperatingSystem]:[WindowsPhone]
[OSVersion]:[10.0.15007.1000]
[Architecture]:[Arm]
[NetworkType]:[MyNameIsVeryLongAndItSOnPurpose]
[FriendlyName]:[Nokia 950]
[DeviceTotalMemory(Mb)]:[1536]
[AppCurrentMemoryUsage(Mb)]:[493.9531]
[IsoStorageAvailableSpaceLocal(Mb)]:[24144.59]
[IsoStorageAvailableSpaceTemporary(Mb)]:[24144.59]
[IsoStorageAvailableSpaceRoaming(Mb)]:[24144.59]

No file details after app has been reactivated

  1. Start the app (when it was not running before)
  2. Go to any file's details page
  3. Go back one step, so that the list of files is shown
  4. Put the app in suspend state (i.e. tap the Windows icon to go back to the start screen)
  5. Restart the app -> the list of files is shown
  6. When tapping a file, nothing happens. Even refreshing won't do the trick.

You'll have to close the app completely and restart it in order to be be able to get to the file details again.

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.