Giter VIP home page Giter VIP logo

save-app-ios's Introduction

Save by OpenArchive

https://open-archive.org/save/

Save by OpenArchive enables you to safely preserve, organize, and share your mobile media.

Designed with and for newsrooms, human rights defenders, and archivists, Save keeps you in control of your mobile media at all times.

Author

Benjamin Erhart, Die Netzarchitekten e.U. https://die.netzarchitekten.com/

Translators

These people kindly donored their time and work to translate the app and surrounding material:

  • French: yahoe.001, n.perraut, soizicat
  • Spanish: yamilabadu, josephdg18, m_rey, Elos, fr0st, ianvatega, losalim
  • Russian: palyanitsin, viktoriiasavchuk
  • Turkish: kayazeren
  • Arabic: ahmedessamdev, mahmoud_th, Sammy_Adams, sec.xyx
  • Persian: ahangarha, voxp
  • Italian: RickDeckard
  • Ukrainian: andriykopanytsia, losalim, viktoriiasavchuk
  • German: m_rey

Thank you very much, folks!

Copyright

2019 - 2024 OpenArchive https://open-archive.org/

Contributing

If you would like to contribute code, please consider the following:

  • Contributions will only be considered when sent via a Git pull request.
  • Stick to the general formatting of the rest of the source code. If you find inconsistencies, your improvements are welcome via pull requests.
  • Stick to the naming conventions of the rest of code. Think hard about naming.
  • Refactor early, don't repeat yourself.
  • Spaghetti code, 1k+ line methods and similar abominations won't be accepted.
  • Don't be too clever. Code which isn't understandable by anyone but you while writing it, won't be acepted. Document the non-obvious!
  • If you find violations of these rules in the existing code, again: Happy to see your pull requests!
  • Contributor License Agreement: If you send pull requests, please state, that you grant OpenArchive the non-revocable right to use your code for this project in any way OpenArchive deems necessary. This includes, re-licensing under another license.

Code of Conduct

Contributor Covenant

Dev Stuff

Build

You'll need to have CocoaPods and Xcode installed. We recommend to install CocoaPods via Homebrew:

brew install cocoapods

Prepare the workspace like this:

git clone https://github.com/OpenArchive/Save-app-ios.git
cd Save-app-ios
pod install
open Save.xcworkspace

Then fill in the missing build configuration in Shared/Config.xcconfig!

Now you should be able to build.

Internet Archive S3 reference:

https://archive.org/help/abouts3.txt https://github.com/vmbrasseur/IAS3API http://internetarchive.readthedocs.io/en/latest/api.html

SVG -> PDF:

http://www.rexfeng.com/blog/2018/08/using-svg-pdf-assets-in-your-ios-app/

brew install python3 cairo pango gdk-pixbuf libffi
pip3 install cairosvg

cairosvg icon.svg -o icon.pdf

save-app-ios's People

Contributors

elric-wamugu avatar hiromipaw avatar n8fr8 avatar tladesignz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

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

save-app-ios's Issues

Flagging media

We have UI for this in ticket #13, but need discuss implementation. How it can be implemented may affect the UI design.

Better dummy icon for servers

We switched the meaning of the icon from user avatar to server favicon.

In the rare cases, we can't fetch a favicon and in the situation before we fetched it, we need a placeholder icon.

Currently, I'm using the old one, but it shows a perso. That doesn't make much sense.

Is it possible to provide one which is related to web servers?

Transparent SVG, as always. Thanks!

Preview view, Icons also initiate actions

Referencing #41 currently, tapping in the text fields allows the user to add info, but I should also be able to tap the "location" icon to add a location.

Keyboard after typing in people who are tagged, the final button should be "DONE" instead of "Next"

Flow through Share Extension

There's another add/upload flow through the Share Extension. Please refer to the current app version on how this currently works.

We can only pick images and videos. All other media (like voice recordings, PDFs in iBooks, various data from other sources like iCloud, Dropbox, Google Drive etc.) need to be added via that facility.

Data we get there is (sometimes edited) copies, not references, so not possible to match with stuff from the camera roll (aka. "Photos" built-in app), even if that one was the actual source.

The Share Extension is somewhat limited. So we cannot just start the full app. We can show one scene and maybe another, but that's it, so e.g. the spaces need to be set up in advance.

We can allow the user to share one, an arbitrary number of or an unlimited number of items at once with OA. Although I would suggest that the user can only select one project to share it with, otherwise that could get funky.

Once our Share Extension closes, control is lost. The only thing which should keep running in the background are uploads, which were started by the user. Only as long as there's no (network) error, of course.

New Project Should Show Up First

@tladesignz
@cstiens and I were talking and think the newest project created should be the first one on the home screen (instead of the newest project going to the far right)
I just posted the issue #47 and wonder if this could help overcome that issue?

uploading to IA / archive.org

  • each media item uploaded to a individual bucket
  • user entered data for tag, flag, location is set for each item using standard ARchive S3-like API fields
  • project name is used as a tag for all items uploaded

Determine limitations of background uploading

  • what is the largest file we can upload in the background?
  • what limitations do we face in trying to upload multiple files in the background?
  • can we use background process / thread to stay alive, check for further files to upload?

Home View (with media)

  • View for 'All' with multiple uploads
    oa-multiple-all
    Info will be editable here. Serves as an 'activity view' to see everything you've uploaded, when, and where to.

  • View for a project with multiple uploads
    oa-multiple-project
    Within the project, uploads just fall in line so you see the entire album but not broken up into uploads. You can still edit info by tapping on individual media like in #13

server url helper

if the user enters just a domain "cloud.guardianproject.info" without https, then we will do the following

  1. prepend it with https://

  2. append /remote.php/webdav/

Home View (empty)

The mockup below shows the basic home view if nothing has been uploaded. We will have some content for this view that makes it more friendly for the first use. The icons are attached.

Font spec for tab text:
SF Pro Display Medium
13 pt
#000

oa-home-empty_v1

home-icons.zip

Import to new project – goes back to first project

From the home screen I

1. created a new project
when I tap "done" it takes me back to the last project I had selected, not the one I just created.

2. tap fab button to import new media
Still can't batch select -- is that coming?
should go straight to preview view after selecting media -- not sure if this has to do with the fact that there is no batch select and therefore not a "DONE" button to tap?

**3. after image is selected, the photo gallery view closes and I am taken back to the first project--not the one I just created **
If I scroll over and open the project I just imported to, the image is there and every other import will open in that project

I created 6 projects and this happens every time.
@tladesignz

Home with no "ALL" tab

Home screen with items waiting to be uploaded

  • badge on project name indicates items waiting for upload
  • Blurred images indicate they have not been uploaded
  • icon takes user to the preview/upload view
  • New project tab has moved to the left side for easy adding with several projects activated

oa-home-done

Home screen while uploading items to server

  • Manage option is available and takes user to the upload manager screen
  • upload progress indicated (3-9 and "UPLOADING" instead of "WAITING")
  • badge is gone from project tab once images are uploaded

oa-upload

Home screen with everything uploaded
oa-home

Waiting/Uploaded Count is Off

@tladesignz I Imported 2 images into a project, but it says that I have 6 items waiting.
When I go into the preview view, it shows 3 of each of the images (6 total)
IMG_2495

Likewise, I had 4 images imported to a different project, uploaded one, and now it's showing that 8 images are uploaded, but only one is.
IMG_2498

graphic warning icon options

Nicole and I discussed it and both agree that these icons a a bit more clear than the current line through eye: ⚠️ 💀 ☠️

What do you think?

Add Media from Share Sheet

Uploading from share sheet workflow
(I accidentally uploaded this to the android github first but closed it)

oa-add-from-share-sheet-workflow

Global Projects vs. Space Specific Projects

User Stories
I'm freelancing for 2 different organizations (with 2 different servers connected on OA). I have different projects associated with them.

HRW added a second server. I'm connected to 2 servers on OA and want them to have the same projects associated with them.

Settings/Account View

edit project, server login and credential setting screens aren't fine tuned yet, but this is the projected layout of the high level settings/account screen.

oa-settings

implement simple metadata format

when OA uploads a file over WebDAV, it needs to also include a second file that contains metadata.

For OA Android, we've started by just exporting a JSON file from the fields of the Media model class we use to persist data in the app. These fields map to the user interface form that a user can edit when they add a new media file into OA.

Here is an example:

{"author":"Nathan F.","createDate":"Oct 17, 2018 4:30:01 PM","description":"aren\u0027t they so orange","licenseUrl":"https://creativecommons.org/licenses/by/4.0/","location":"pumpkin patch","mediaHash":[],"mimeType":"image/jpeg","originalFilePath":"content://com.android.providers.media.documents/document/image%3A66971","serverUrl":"https://cloud.guardianproject.info/remote.php/dav/files/n8fr8/OpenArchive/hcd5-kids+love+pumpkins.jpg/jqnr-kids+love+pumpkins.jpg","status":3,"tags":"autumn;;Halloween","title":"kids love pumpkins","id":15}

This clearly has some android specific fields, but the key ones are:

author, title, createDate (based on file system on the device), description, license (CC etc), location, tags

@foundscapes should chime in here, as well, about what we think are the essential fields, if there are more.

As you can see my metadata json is about as simple as can get, and really is meant as a simple way to capture data from OA in an intermediate format.

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.