1253 Commits

Author SHA1 Message Date
Hans-Christoph Steiner
a71eb243fa remove unused imports 2017-07-18 10:09:34 +02:00
Hans-Christoph Steiner
c93cd5a3e6 Build to 1000001 2017-07-18 10:01:41 +02:00
Hans-Christoph Steiner
f30b73ed17 remove unused imports 2017-07-18 09:40:40 +02:00
Hans-Christoph Steiner
6dc49eef0f fix blank plurals items in he 2017-07-18 08:14:59 +02:00
Hans-Christoph Steiner
419c48a234 remove bad translation with missing format 2017-07-18 00:48:45 +02:00
Hans-Christoph Steiner
166171eb32 fix format strings 2017-07-18 00:39:20 +02:00
Lobsang
e331913f6d Translated using Weblate (Tibetan)
Currently translated at 100.0% (372 of 372 strings)
2017-07-17 23:24:38 +02:00
Allan Nordhøy
5f94beb25d Translated using Weblate (Norwegian Bokmål)
Currently translated at 91.1% (339 of 372 strings)
2017-07-17 23:24:38 +02:00
Yaron Shahrabani
c69df9fb8c Translated using Weblate (Hebrew)
Currently translated at 100.0% (372 of 372 strings)
2017-07-17 23:24:38 +02:00
Green Lunar
11152925c5 Translated using Weblate (Hebrew)
Currently translated at 100.0% (372 of 372 strings)
2017-07-17 23:24:38 +02:00
Luiz Carlos de Oliveira
c5f837f8ab Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (372 of 372 strings)
2017-07-17 23:24:38 +02:00
Claus Rüdinger
31a52c3d48 Translated using Weblate (German)
Currently translated at 100.0% (372 of 372 strings)
2017-07-17 23:24:38 +02:00
Licaon Kter
a07e2b2db3 Translated using Weblate (Romanian)
Currently translated at 93.5% (348 of 372 strings)
2017-07-17 23:24:38 +02:00
Luca D'Amico
45d130f072 Translated using Weblate (Italian)
Currently translated at 100.0% (372 of 372 strings)
2017-07-17 23:24:38 +02:00
Yaron Shahrabani
5091366b2d Translated using Weblate (Hebrew)
Currently translated at 100.0% (372 of 372 strings)
2017-07-17 23:24:38 +02:00
Nathan Follens
dcfeb47bc6 Translated using Weblate (Dutch)
Currently translated at 100.0% (372 of 372 strings)
2017-07-17 23:24:37 +02:00
ezjerry liao
fbd7a7cfb0 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (372 of 372 strings)
2017-07-17 23:24:37 +02:00
Nine Lima
d4b04c187d Translated using Weblate (Afrikaans)
Currently translated at 100.0% (372 of 372 strings)
2017-07-17 23:24:37 +02:00
José Rodrigo Baires Quezada
8497b76a21 Translated using Weblate (Spanish)
Currently translated at 100.0% (372 of 372 strings)
2017-07-17 23:24:37 +02:00
Osoitz
2bc8c3ee36 Translated using Weblate (Basque)
Currently translated at 100.0% (372 of 372 strings)
2017-07-17 23:24:37 +02:00
Ajeje Brazorf
9049418e8d Translated using Weblate (Sardinian)
Currently translated at 100.0% (372 of 372 strings)
2017-07-17 23:24:37 +02:00
tonghuix
e6d77460b7 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (372 of 372 strings)
2017-07-17 23:24:37 +02:00
Viktar Vauchkevich
5a4ffa7cac Translated using Weblate (Belarusian)
Currently translated at 100.0% (372 of 372 strings)
2017-07-17 23:24:37 +02:00
tenzin tselek
8e830ed102 Translated using Weblate (Tibetan)
Currently translated at 100.0% (372 of 372 strings)
2017-07-17 23:24:37 +02:00
José Rodrigo Baires Quezada
745bd5bc38 Translated using Weblate (Spanish)
Currently translated at 100.0% (372 of 372 strings)
2017-07-17 23:24:37 +02:00
zmni
972869f27d Translated using Weblate (Indonesian)
Currently translated at 100.0% (372 of 372 strings)
2017-07-17 23:24:37 +02:00
naofum
9392878b02 Translated using Weblate (Japanese)
Currently translated at 100.0% (372 of 372 strings)
2017-07-17 23:24:37 +02:00
Verdulo
555352e947 Translated using Weblate (Polish)
Currently translated at 100.0% (372 of 372 strings)
2017-07-17 23:24:37 +02:00
Verdulo
f41104a306 Translated using Weblate (Esperanto)
Currently translated at 100.0% (372 of 372 strings)
2017-07-17 23:24:37 +02:00
eghbalmohsen
bad714d60e Translated using Weblate (Persian)
Currently translated at 100.0% (372 of 372 strings)
2017-07-17 23:24:37 +02:00
Peter Serwylo
1bd9a73dbc Cache results of category-id query.
Each app insert required asking the database for the ID of each
category an app is in. Given the categories don't change (ever)
but are only appended to, we can cache the results in a static
Java variable for increased performance.

This reduced the "repo persister" logic for me from 50 seconds
for main F-Droid and 100 seconds for Archive, down to 15 seconds
and 30 seconds respectively.
2017-07-17 14:34:34 +10:00
Peter Serwylo
e26748e0e0 Remove now-unneccesary "update" code from repo updater.
Now that we need only "insert" new apps rather than"
 * Identify if an app exists
 * If so, update
 * If not, insert

There is much less code required for all of this stuff.
2017-07-17 14:33:16 +10:00
Peter Serwylo
5bde27daa8 Only copy the apps/apks for the current repo to temp tables.
When preparing a temp database to write to, don't copy all apps/apks.
Instead, only copy those _not_ belonging to the repo we are updating.
In an ideal world, we'd not even need to copy them, but we need
their IDs to be in the temp database so that we don't accidentally
use the same auto-generated ID as the main database.

This also means that we can drop the check for "does this app exist,
and hence should we UPDATE it instead of INSERTing it?" and always
just insert it.

Then, when copying the temp table back to disk, first delete all
apps/apks _belonging to the repo being updated_. Then, copy back the
apks/apps we found in the repo. This again improves performance because
we no longer need to bopy back and forth data which we know
wont change (as evidenced by the fact it belongs to a differen trepo).

I don't think this was possible earlier before we did the work to
support repo priorities properly. That is because we had a single app
which was serviced by several repositories. Now, we have multiple
entries in the `fdroid_app` table, for each repo which supports
that app.
2017-07-17 14:27:43 +10:00
Peter Serwylo
8c3441939f Pass through the ID of the repo being updated to the temp tables.
This will allow for more intelligent and efficient copying of data back
and forth from temp to persistent tables.
2017-07-17 12:45:55 +10:00
Hans-Christoph Steiner
488b9b02f9 update Issue763MultiRepo test to work with valid signatures
The test files used in Issue763MultiRepo.java are signed using MD5, which
is now considered invalid.  So if that test is run on any recent Java, it
will fail with a signature error.  This updates the test files to be signed
with SHA1 instead.

* index.microg.jar is a new version fetched from https://microg.org
* index.antox.jar was resigned with the testy.at.or.at key, since antox
  website doesn't exist anymore.
2017-07-14 21:55:33 +02:00
Peter Serwylo
e62f695a48 Force refresh of repos so that preferred signer is present.
It is a bit harsh to do this, but the rationale is explained in #1105.

Fixes #1105.
2017-07-12 17:12:46 +10:00
Peter Serwylo
2523134485 Add drop shadow to toolbar items in AppDetails.
This is so that feature images with white backgrounds to not completely
obscure the icons.

Fixes #1097.
2017-07-10 12:59:52 +10:00
Hans-Christoph Steiner
300677fb9c Bump to 1000000 2017-07-08 00:10:59 +02:00
Hans-Christoph Steiner
57664eb086 stop using 'v' prefix for release tags 2017-07-08 00:10:45 +02:00
Hans-Christoph Steiner
490b757113 Merge weblate 2017-07-07 21:44:09 +00:00
Hans-Christoph Steiner
dcf395ad9a add test to update index.xml using index-v1.json 2017-07-07 18:06:49 +02:00
Hans-Christoph Steiner
6c247e3201 Jackson gives us {"repo": {"mirrors": ["foo", "bar"] as ArrayList
I was optimistic and guessed it was a String[], since that's what is needed.

Found by @cde while working on #35
2017-07-07 18:06:49 +02:00
Hans-Christoph Steiner
2a7fe78483 split IndexV1Updater's repo saving into working code
RepoUpdater.prepareRepoDetailsForSaving() was broken here because the Repo
properties were being set before calling it, and then the Repo instance was
passed to it for comparison.  So the comparison was always saying the value
was unchanged.  In IndexV1Updater, the flow doesn't need those checks.

This also fixes the bug where added repos never had their name/description/
icon/etc show up in ManageRepos and RepoDetails.

@cde found this bug working on mirror support, thanks!

related to #35
closes #1016
2017-07-07 18:06:49 +02:00
Hans-Christoph Steiner
0180e754fe remove needlessly scary sentence from otherwise friendly Updates screen
This is not really a useful way to tell the user that the index might be
out of date.  It just adds confusion and makes people think that F-Droid
isn't quite smart enough to know what's going on.
2017-07-07 18:05:53 +02:00
Hans-Christoph Steiner
7dbf03c435 Apk.isMediaInstalled() needs to check using sanitized file names
The install process automatically sanitizes filenames to avoid exploits
that put attack code in the filename.  Media files are also installed using
this logic, so the installed check needs to use sanitized file names to be
accurate.
2017-07-07 17:09:14 +05:30
Hans-Christoph Steiner
c5a1b11315 allow spaces in file names
This will be more important as people work with media, since it is quite
common to use spaces in filenames generated by humans.  Media files will
not be built by fdroid, so most likely, they will have human-generated
names.
2017-07-07 12:10:52 +05:30
Hans-Christoph Steiner
06bcf75f9b put the faster check first in App.isInstalled()
A > is much faster than all the stuff that isMediaInstalled() has to do,
so put > first, so that if it is true, isMediaInstalled() is not executed.
2017-07-07 12:10:51 +05:30
Chirayu Desai
0d8b0c7fd4 Introduce FileInstaller, a way to handle media files from F-Droid
* This installer is invoked when for non-apk/media files, and
  copies them to an appropriate folder on the sdcard.
* We also introduce a FileInstallerActivity to ask for storage
  permissions at runtime, as needed by Android 6.0 and above,
  and handle the install/uninstall process.
* A toast is shown with the install path after installation.

TODO:
* Manage Installed Apps screen doesn't show media files.
2017-07-07 12:10:48 +05:30
Chirayu Desai
cbf3133e43 AppProvider: Use IS instead of = for suggestedApk calculation
* For non apk files, the signature column would be NULL always,
and in SQLite NULL = NULL is false, but NULL IS NULL is true.

See http://www.sqlite.org/lang_expr.html Operators
2017-07-07 11:41:02 +05:30
Hans-Christoph Steiner
339deb97d9 Merge branch 'issue-1093--reduce-ci-verbosity' into 'master'
Reduce verbosity of CI logging

See merge request !557
2017-07-06 22:19:56 +00:00