Amahi iOS App, new from scratch, in Swift.

Related tags

File Management ios
Overview

Amahi iOS App

Amahi iOS App, new from scratch, in Swift.

Build Status master

Build Status beta

Requirements

  • iOS 9.0+
  • Xcode 9.0+

Setup

  • Close Xcode
  • Open a terminal window, and $ cd into your project directory.
  • Run $ pod install
  • You may require to run $ pod update
  • $ open AmahiAnywhere.xcworkspace and build.
  • The build may fail with a missing ApiConfig.swift file
  • This file has developer/production credentials/endpoints and should not be shared. Email support at amahi dot org a copy of this file.

Code Practices

Please help us follow the best practice to make it easy for the reviewer as well as the contributor.

  • Please follow the guides and code standards: Swift Style Guide
  • Please follow the good iOS development practices: iOS Good Practices
  • If the PR is related to any front end change, please attach relevant screenshots in the pull request description.
  • When creating PRs or commiting changes. Please ensure the sensitive contents of the ApiConfig.swift file are ignored. Such PRs will be declined.

Pods

  • Alamofire: Elegant HTTP Networking in Swift

  • EVReflection: Reflection based (Dictionary, CKRecord, NSManagedObject, Realm, JSON and XML) object mapping with extensions for Alamofire

  • IQKeyboardManagerSwift: Codeless drop-in universal library allows to prevent issues of keyboard sliding up and cover UITextField/UITextView with one line of code

  • MBProgressHUD: It is an iOS drop-in class that displays a translucent HUD with an indicator and/or labels while work is being done in a background thread.

  • MobileVLCKit: It is an Objective-C wrapper for libvlc's external interface on iOS.

  • SkyFloatingLabelTextField: A beautiful and flexible text field control implementation of "Float Label Pattern". Written in Swift.

  • LightBox: Provides a convenient and easy to use image viewer for iOS app, packed with with features like swipe left/right to change, double tap to zoom, pinch to zoom, caching etc.

Support

If you have questions about Amahi or just want to interact, you can contact us via IRC channel. Don't forget that we are open to suggestions, extensions or adaptations. Feel free to discuss or propose new ideas for projects!

This app will go into the iOS app store and replace the current version there written in Objective C.

Comments
  • login requirements

    login requirements

    the login requirements are as follows:

    UI:

    • logo, up top, typically
    • "Username or email" field, should show an email keyboard
    • "Password" field, regular keyboard, secure
    • those two fields must not be occluded by the keyboard pulling up
    • "Login" button

    Once these fields collected, the app has to use Oauth 2.0 to login.

    The details of the url to use have to be loaded from a file in the code e.g. a definition file or something, however, the real credentials must not be committed in the git repo, as they are not public information:

    • amahi login url
    • amahi proxy url
    • client id
    • client secret

    once logged in, the user must remain logged in until the user taps on some logout button/link (typically under some settings page that will include among other things this logout).

    until it has such a functionality, the logout button/link can be anywhere, e.g. the header.

    opened by cpg 15
  • settings area requirements

    settings area requirements

    We will need a settings area for the app.

    At the moment we have the following settings:

    • "Connection" switch: a 3-position chooser/switch, Autodetect (default), LAN and Remote
    • A way to "Sign out" of the app back to the login screen
    • An "About" area with the version of the app. We need to identify where this version is picked up from. Maybe a constant in the code for now.
    • A "Feedback" button/link to kick off an email with an email client to support at amahi dot org with Subject "iOS Amahi Anywhere"
    • A "Rate" button/link to let the user rate the app. Please be aware that there may be specific for doing this in iOS for compliance with app store

    W may add more settings as we go along.

    It has to look clean, needless to say.

    opened by cpg 14
  • Miscellaneous improvements and bug fixes

    Miscellaneous improvements and bug fixes

    Hi everyone,

    I cloned the main repository and did some fixes and added some new features to the app.

    Video of the app showing the changes: Video Link

    Features Added:

    • Improved the UI and UX of the app to give it a more modern and cleaner look and feel
    • Added a tab bar navigation system to help the user find the main screens of the app more easier. Tab bars are known are for its simplicity and ease of use, lots of popular apps use it

    Login Screen:

    • Added a touch gesture recogniser on the screen so the keyboard can be dismissed when the user touches somewhere else on the screen during username or password input
    • Error message appears for both textfields at the same time if both textfields are empty
    • Added a show/hide button to the password field to enable the user to see the password in plain text too
    • Tapping on the return key(Next) in the username textfield will make the password textfield active and the return key(Done) in the password will trigger the sign in button action
    • Landscape support added, the interface looks nice even in landscape mode

    Servers Screen:

    • Replaced table view with a collection view and added server icons to improve the user interface design
    • Fixed a bug where the refresh indicator wouldn't change to its tint colour when the user first loads the servers screen

    Downlads Screen:

    • Keyboard now gets dismissed if the user touches outside the search bar during search input
    • Increased width for the segmented control makes the interface look better

    Settings Screen:

    • Fixed the order of the sign out action buttons. Usually apps put the delete button on the left side and the delete(main action) on the right side
    • Added a selection colour to each field to indicate which settings item was pressed by the user
    • Removed unnecessary pop up when no email account is setup and user tries to send feedback. iOS already displays a pop up warning
    • Fixed a bug where the username and password fields would not be empty after signing out when the user signed in previously in the same session

    Settings Connection Screen:

    • Fixed a crash which would occur if the user tried to change the connection type without going into a HDA previously on the HDA screen
    • Changed the back button colour to white from blue to match the black-white theme of the app
    opened by Marton-Zeisler 12
  • Audio Player Improvements

    Audio Player Improvements

    This PR includes following features:

    1. A queue View Conrtoller for next up tracks in the queue.
    2. Interactive and interruptive animations for the queue VC.
    3. Fixed iOS 13 bug in the Audio Player( #289 )

    opened by ShresthPratapSingh 10
  • pod install error

    pod install error

    Analyzing dependencies Cloning spec repo cocoapods from https://github.com/CocoaPods/Specs.git

    stuck on cloning spec repo.

    @aljachimiak @cpg @megabitdragon @sukhbir-singh

    opened by anubhavpulkit 10
  • Recreated Music Player

    Recreated Music Player

    Designed the music player, used AVPlayer in place of AVQueuePlayer (to easily implement features like shuffle, play the previous item). #123

    image (11)

    Features added

    • Song, Artist, and Artwork on the screen
    • Continuous music play
    • Skip to next/previous music file
    • Playlist functionality
    • On call interruption, music will resume playing when the call ends
    • Audio controls with artwork displayed on the lock screen
    • Music plays in the background thread
    • Shuffle and Repeat functionality

    Improvements to be done

    • Cache the Artwork
    • Fix the jumpy time slider
    • The slider on the lock screen/control screen changes the position of the file playing, but the changes in position from the music player won't reflect on the former
    • The initial time to load and start the music player should be reduced
    • Manage audio session if the user plays audio on some other app
    • Handle the audio session with Bluetooth devices
    • Improve the transition between the audio files (all info on the screen should be in better sync, like the way music player acts when playing downloaded audio files)

    Could be done

    • Close button be added in place of "Done"
    • Show the current volume on the screen
    • More metadata (Album name, Genre, etc.)
    opened by iswiftshek 10
  • my pictures folder chokes the app with a networking error

    my pictures folder chokes the app with a networking error

    there appears to be no such error on the call over the network, just the app displays a (rather amateurish-looking "Oops!" error), network error alert. Pulling down does not seem to help.

    i can provide the output of my pictures folder (about 578 entries) in private.

    opened by cpg 10
  • Global layout and SDWebImage Update and Fix

    Global layout and SDWebImage Update and Fix

    • I updated the SDWebImage pod to 5.0.6
    • I also Implemented a global layout view mode. So now if you change the layout from grid to list mode and go inside a folder then the layout will be the same.
    opened by Marton-Zeisler 9
  • shows files in Files app and iTunes sharing done

    shows files in Files app and iTunes sharing done

    • Updated Info.plist to show files in File app and enabled iTunes file sharing.
    • The files appear as shown below in the Files app: desk
    • We can add files to Amahi's directory in the files app through iTunes and access the downloads under "Apps" in iTunes. Here's how it looks: gifAmahi

    Issues solved: #101

    P.S. The files deleted or added through iTunes are shown in Files and can be opened, shared and deleted, but reflecting the same in the Downloads section in Amahi is yet to be done. So I'm currently working on that #142

    opened by iswiftshek 9
  • files saved offline shows in Files app

    files saved offline shows in Files app

    I'm not sure if this is what was supposed to be done in #101 It's already saving the files, but the plist wasn't updated to see them in the Files app.

    Here's how it looks now:- desk

    opened by iswiftshek 9
  • Google cast added in video-player

    Google cast added in video-player

    Description

    Google Cast allows users to cast content from a mobile device to a TV. Users can then use their mobile device as a remote control for media playback on the TV. In this PR we add an expanded controller. I'm using google cast official tutorial to add this feature.

    Fixes #314

    Type of Change:

    • Code
    • Quality Assurance
    • User Interface

    How Has This Been Tested?

    I can't test this feature because I don't have Chromecast devices to test this feature.

    Checklist:

    • [x] My PR follows the style guidelines of this project
    • [x] I have commented my code or provided relevant documentation, particularly in hard-to-understand areas
    opened by anubhavpulkit 8
  • Assets.xcassets files update

    Assets.xcassets files update

    There are so many unused png files are present in Assets.xcassets to reduce the size of Amahi iOS app we need to clear them. And also we need to add a new Amahi logo image for the walkthrough(with white text) and a set of Amahi logo images for the launch screen.

    opened by anubhavpulkit 0
  • Failed download does not reflect error or downloaded size.

    Failed download does not reflect error or downloaded size.

    Description

    When a server is stopped while a file is being downloaded, no error is shown for download being interrupted and the file currently being downloaded shows the actual size.

    How to Reproduce

    1. Navigate to a share and download a file
    2. While the file is being downloaded stop the server by using command : sudo systemctl stop amahi-anywhere

    Issues Encountered

    1. The file does not show any kind of error or indication that this download was interrupted.
    2. The file size for the interrupted download shows the original section.(A file of 1.2 gb when interrupted at 7% shows a size of 1.2 gb in the downloads section).
    3. On sharing this file in the share sheet, it shows the partial size that was probably downloaded before it was interrupted.
    opened by ShresthPratapSingh 0
  • Update recent files UI

    Update recent files UI

    Description

    UI of the recent file is quite different than other UIs which contain files(like Offline UI) because of unavailability of the number of files label and the sort button and difference in the search controller UI.

    Mocks

    recent offline

    Acceptance Criteria

    • [ ] [ Need to add sort button]
    • [ ] [ Need to add number of files label]
    • [ ] [Update the location of search button]
    opened by anubhavpulkit 1
  • Pin based NAU-login

    Pin based NAU-login

    Description

    This Pr fixes #221 Implemented direct Pin based login for Non-administrative users.

    Screenshots

    This features involves following changes in the login UI

    opened by ShresthPratapSingh 1
📱 Nextcloud iOS App

Nextcloud iOS app Check out https://nextcloud.com and follow us on twitter.com/nextclouders or twitter.com/NextcloudiOS How to contribute If you want

Nextcloud 1.4k Jan 7, 2023
Cozy Drive Web App for Cozy Cloud

Cozy Drive What's Cozy? Cozy is a platform that brings all your web services in the same private space. With it, your webapps and your devices can sha

Cozy.io 138 Dec 14, 2022
Seafile-iOS is a the iOS client for Seafile.

Introduction Seafile-iOS is a the iOS client for Seafile. Build and Run Follow these steps : git clone https://github.com/haiwen/seafile-iOS.git cd se

null 202 Dec 29, 2022
Next-generation file browser for iOS.

Files Next-generation file browser for iOS. Multiple-column-UI on iPad System-wide Document Provider - open files in other apps Go to Folder Sorting o

Steven Troughton-Smith 300 Nov 20, 2022
FileExplorer is a powerful iOS file browser that allows its users to choose and remove files and/or directories

FileExplorer (iOS 9.0+) ?? Project created and maintained by Rafał Augustyniak. You can find me on twitter (@RaAugustyniak). Introduction FileExplorer

Rafał Augustyniak 717 Dec 19, 2022
A modern iOS application for kDrive by Infomaniak.

Infomaniak kDrive app A modern iOS application for kDrive by Infomaniak. Synchronise, share, collaborate. The Swiss cloud that’s 100% secure. ☁️ All t

Infomaniak 27 Nov 1, 2022
CalendarApp Swift - Made a calendar app in swift, completely from scratch using UIStackView and UICollectionView

CalendarApp_Swift Made a calendar app in swift, completely from scratch using UI

Arnav Chhokra 1 Feb 4, 2022
Build a workout app from scratch using SwiftUI and HealthKit

Build a workout app for Apple Watch Build a workout app from scratch using SwiftUI and HealthKit during this code along. Learn how to support the Alwa

paigeshin 5 Nov 28, 2022
Create a weather app from scratch with this SwiftUI Crash Course

"Create a weather app from scratch with this SwiftUI Crash Course" https://youtu

Alexey Saechnikov 0 Dec 17, 2021
Ios-desde-cero - Code, documents and resources used in the Stream iOS from scratch

iOS desde cero ¿Qué es esto? iOS desde Cero es un Streaming en ???? sobre desarr

Diego Freniche 36 Aug 22, 2022
Don't start from scratch, start from Here! This is a starter project for iOS projects. It contains all the basic configurations and common libraries for your project.

Starter-iOS Don't start from scratch, start from Here! This is a starter project for iOS projects. It contains all the basic configurations and common

Shaban Kamel 6 May 24, 2022
The Discord API implementation behind Swiftcord, implemented completely from scratch in Swift

DiscordKit The Discord API implementation that powers Swiftcord This implementation has fully functional REST and Gateway support, but is mainly geare

Swiftcord 71 Dec 20, 2022
A custom ImageView that is used to cover the surface of other view like a scratch card, user can swipe the mulch to see the view below.

MCScratchImageView GIF Showcase Requirments iOS 8.0+ Xcode 7.2+ Swift 4.0 Installation CocoaPods pod "MCScratchImageView" Manually Just drag MCScratch

Jaylen Bian 359 Dec 17, 2022
Alter SDK is a cross-platform SDK consisting of a real-time 3D avatar system, facial motion capture, and an Avatar Designer component built from scratch for web3 interoperability and the open metaverse.

Alter SDK is a cross-platform SDK consisting of a real-time 3D avatar system, facial motion capture, and an Avatar Designer component built from scratch for web3 interoperability and the open metaverse.

Alter 45 Nov 29, 2022
GLScratchCard - Scratch card effect

I loved the way payments app's like Google pay and PhonePe used scratch card option to reward it's user. Hence with ?? cloned the same scratch card effect for you guys out there

Gokul 84 Dec 5, 2022
Discover new programming concepts and more new SwiftUI 2 features in this section

Africa-Zoo One thing is sure, we will discover new programming concepts and more new SwiftUI 2 features in this section. TOPICS ARE COVERED: JSON with

Noye Samuel 2 Nov 8, 2022
An experimental clone of the new iOS 11 App Store app

appstore-clone An experimental clone of the new iOS 11 App Store app for this Medium Article Description Apple announced an entirely redesigned iOS Ap

Phill Farrugia 498 Dec 13, 2022
Booky heavily-commented demo app built to explore Apple's new 'App Intents' framework introduced in iOS 16

Booky Demo App ℹ️ ABOUT Booky is a work-in-progress, heavily-commented demo app built to explore Apple's new 'App Intents' framework introduced in iOS

Alex Hay 77 Jan 4, 2023
WHAT WILL YOU LEARN? Onboarding Screen with Page Tab View, state of the app with the new App Storage

WHAT WILL YOU LEARN? Onboarding Screen with Page Tab View, state of the app with the new App Storage Onboarding or a Home screen Understand how the new App Life Cycle works Link View 
 Group Box View Disclosure View Dynamically List View with a loop

Ghullam Abbas 5 Oct 17, 2022
Voice Memos is an audio recorder App for iPhone and iPad that covers some of the new technologies and APIs introduced in iOS 8 written in Swift.

VoiceMemos Voice Memos is a voice recorder App for iPhone and iPad that covers some of the new technologies and APIs introduced in iOS 8 written in Sw

Zhouqi Mo 322 Aug 4, 2022