Skip to content

Commit

Permalink
Merge dev into master (#273)
Browse files Browse the repository at this point in the history
* Update navigation (#231)

* updated multiple backstack navigation with official libraries

* fixed top navigation destinations

* updated menus for new navigation version

* formatted code

* fix navigation and action bar not updating colors

* fix background not showing

* check if job is active before executing actions

* show toast when downloading the plugin pack

* added youtube link support

* removed unneeded code

* updated default hosts handling

* Fix fragment state restoration broken by new navigation

* updated dependencies

* updated activity for navigation

* Update README.md

added f droid description and images

* Update README.md

fixed fdroid badge

* updated strings

* Updates check (#234)

* changed extension from fragment to context base

* check for updates at startup

* show the update message  only once

* Show items cache status in search screen (#245)

* added adapters for checking torrent cache

* updated magnet pattern

* retrieve caching state after search has been made

* update list after getting cache results

* fix unsupported parcelable implementation

see #205

* better search file size parsing

close #240

* fixed wrong pattern matching

* added sorting by seeders

close #241

* moved generic regex to own file

* formatted code

* saved configuration

* never show delete all buttons in top menu

close #237

* updated search parser for direct mode

* updated rlsbb plugin

close #213

* Update template.json5

* added some domains to "open with app"

also alphabetically sorted them

close #207

* Delete zooqle.unchained

* Avoid crashes if no browsing/media app are found

* cleaned up code

* better missing app explanation

close #210

* added custom color for navigation and status bar

* updated night theme for amoled

see #238

* use custom sorting menu for folder screen

it does not use seeders for example

* close keyboard on enter

* scroll in folder view only on first creation

close #206

* close keyboard on enter in more screens

* Custom download manager (#250)

Added an okHttp download manager that uses Android Workers to manage downloads
close# 105

* Download cached torrent (#259)

* updated dependencies

* added new cache json parser

* check every magnet for cache

* updated search item view

* use new @parcelize

* show cached status in searched item details

* copy link on search list item click

* added cache selection fragment

* moved token management in parent BaseRepository class

* cleaned up deprecated functions

* added torrent cache management fragment

* added original file size in torrent details

* removed torrent processing fragment from backstack

* added download listener to torrent processing button

* fixed wrong items comparison

* return result from selectFiles operation

* updated torrent selection flow

* updated torrent details page

* added downlaod torrent from url management

* better management of shared torrents

* readded double tap to clear navigation stack

* code clean up

* added notification permission check for newer devices

* added torrent file re-selection (#263)

useful for caching and such
close #261

* added missing string

* feat: Added about page (#266)

* feat: Added about page

* refactor: use menu provider for about menu

* feat: added translations

* updated dependency

* updated github actions (#268)

* updated github actions

close #267

* use kotlin plugin for parcelization (#269)

close #264

* added button to let user open torrent details

this lets the user use the reselect files button
related to #261

* updated dependencies

* Add torrent files selection (#270)

close #260 #205  #94 

* better torrent details

* added torrent file structure parser

* removed unnecessary gradle property

* added torrent files selected list in torrent details

* disable click on cache tab if no cache is available

* added basic torrent file picker structure

* added basic file list in picker

* removed lint debug action

lint release should be enough

* Add/spanish (#272)

* Translated using Weblate (Spanish)

Currently translated at 41.8% (129 of 308 strings)

Translation: Unchained for Android/strings
Translate-URL: https://localization.professiona.li/projects/unchained-for-android/strings/es/

Co-authored-by: valrockies

ignored build lint fail for missing strings

* added ai translated spanish strings

* updated version for release

* added translator credit

see #254

close #232

Co-authored-by: Tiago Araujo <[email protected]>
  • Loading branch information
LivingWithHippos and Tgo1014 authored Nov 1, 2022
1 parent ec2ae1d commit 1c9b8a1
Show file tree
Hide file tree
Showing 159 changed files with 13,493 additions and 2,956 deletions.
26 changes: 6 additions & 20 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,30 +11,16 @@ defaults:
# github does not appreciate ~ as home indicator. Prefer the full path.
working-directory: /home/runner/work/unchained-android/unchained-android/app
jobs:
lint-debug:
name: Run Debug Linter
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Run tests
run: ./gradlew lintDebug
- name: Save lint reports
uses: actions/upload-artifact@v2
# artifacts are zipped together in the end
with:
name: lint-debug-report
path: /home/runner/work/unchained-android/unchained-android/app/app/build/reports/
lint-release:
name: Run Release Linter
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Run tests
run: ./gradlew lintRelease
- name: Save lint reports
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v3
# artifacts are zipped together in the end
with:
name: lint-release-report
Expand All @@ -43,7 +29,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Retrieve keystore for apk signing
env:
ENCODED_KEYSTORE: ${{ secrets.KEYSTORE }}
Expand All @@ -58,15 +44,15 @@ jobs:
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
run: ./gradlew clean assembleRelease --stacktrace
- name: Save apk
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v3
with:
name: apk
path: /home/runner/work/unchained-android/unchained-android/app/app/build/outputs/apk/release/*.apk
build-debug:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Retrieve keystore for apk signing
env:
ENCODED_KEYSTORE: ${{ secrets.KEYSTORE }}
Expand All @@ -81,7 +67,7 @@ jobs:
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
run: ./gradlew clean assembleDebug --stacktrace
- name: Save apk
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v3
with:
name: apk-debug
path: /home/runner/work/unchained-android/unchained-android/app/app/build/outputs/apk/debug/*.apk
Expand Down
32 changes: 22 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,12 @@

# Unchained for Android

[![License](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) [![Kotlin Version](https://img.shields.io/badge/kotlin-1.5.30-blue)](http://kotlinlang.org/) [![API](https://img.shields.io/badge/API-22%2B-brightgreen.svg?style=flat)](https://android-arsenal.com/api?level=22) [![Build Status](https://img.shields.io/github/workflow/status/LivingWithHippos/unchained-android/Build)](https://github.com/LivingWithHippos/unchained-android/actions) [![Play Store](https://img.shields.io/badge/play%20store-available-brightgreen)](https://play.google.com/store/apps/details?id=com.github.livingwithhippos.unchained) [![translated](https://localization.professiona.li/widgets/unchained-for-android/-/strings/svg-badge.svg)](https://localization.professiona.li/engage/unchained-for-android/)
[![License](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) [![API](https://img.shields.io/badge/API-22%2B-brightgreen.svg?style=flat)](https://android-arsenal.com/api?level=22) [![Build Status](https://img.shields.io/github/workflow/status/LivingWithHippos/unchained-android/Build)](https://github.com/LivingWithHippos/unchained-android/actions) [![Play Store](https://img.shields.io/badge/play%20store-available-brightgreen)](https://play.google.com/store/apps/details?id=com.github.livingwithhippos.unchained) [![F Droid](https://img.shields.io/f-droid/v/com.github.livingwithhippos.unchained)](https://f-droid.org/packages/com.github.livingwithhippos.unchained/) [![translated](https://localization.professiona.li/widgets/unchained-for-android/-/strings/svg-badge.svg)](https://localization.professiona.li/engage/unchained-for-android/)


<a href='https://f-droid.org/packages/com.github.livingwithhippos.unchained/'><img alt='Get it on F Droid' src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png" height="75"/></a> <a href='https://play.google.com/store/apps/details?id=com.github.livingwithhippos.unchained'><img alt='Get it on Google Play' src='https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png' height="75"/></a>





Expand All @@ -14,21 +19,21 @@ App to interact with [Real Debrid](https://real-debrid.com/) APIs.

Real Debrid is a service to download files from hosting websites and the torrent network.
Files are downloaded directly on their servers that you can then use for your downloads.
They provide high speeds without premium accounts for a lot of services like Mega and RapidGator
and can also stream media files directly. It offers a cheap premium service.
They provide high speeds for a lot of services like Mega and RapidGator without needing
all their premium accounts, and can also stream media files directly.
**N.B. Real Debrid is a (cheap) paid service**

### Features :memo:

You can take a look at the project [here](https://github.com/LivingWithHippos/unchained-android/projects/1) for general status.

- [x] user info
- [x] themes support
- [x] hoster support
- [x] magnets/torrents support
- [x] file hosting services support
- [x] streaming support (needs a player that supports streaming like mpv or VLC)
- [x] search websites for files with plugins
- [x] containers support
- [x] magnets support
- [x] torrent support
- [x] streaming support (needs a player that supports streaming like VLC)
- [x] search magnet and torrents
- [x] user info
- [x] themes

### Screenshots :iphone:

Expand All @@ -48,6 +53,9 @@ You have multiple options to install Unchained for Android:

### Developing and Contributing :writing_hand:

## [![Repography logo](https://images.repography.com/logo.svg)](https://repography.com) /
[![Issue status graph](https://images.repography.com/28505435/LivingWithHippos/unchained-android/recent-activity/9be46c12746e55ef26535ea523c2bda5_issues.svg)](https://github.com/LivingWithHippos/unchained-android/issues)


Contributions are welcome. You can use the [discussion tab](https://github.com/LivingWithHippos/unchained-android/discussions) to ask for help setting up the project. At the moment at least Android Studio 2021.1.1 is needed to build the project.

Expand Down Expand Up @@ -108,6 +116,10 @@ LWeoBVVmaYAiZ3oGaLAV9sV2dvY62XxdCF
- DaisyF8
- Roadhouse

#### Translators

- edgarpatronperez (spanish)

#### Media

Logo and symbols inspired by [minimal logo design set](https://www.rawpixel.com/image/843352/minimal-logo-designs-set) offered by [rawpixel.com](https://www.rawpixel.com)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Check dependencies updates" type="GradleRunConfiguration" factoryName="Gradle">
<configuration default="false" name="Lint checking" type="GradleRunConfiguration" factoryName="Gradle">
<ExternalSystemSettings>
<option name="executionName" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="externalSystemIdString" value="GRADLE" />
<option name="scriptParameters" value="--scan" />
<option name="scriptParameters" value="" />
<option name="taskDescriptions">
<list />
</option>
<option name="taskNames">
<list>
<option value="dependencyUpdates" />
<option value="ktLintCheck" />
</list>
</option>
<option name="vmOptions" value="" />
<option name="vmOptions" />
</ExternalSystemSettings>
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
Expand Down
23 changes: 23 additions & 0 deletions app/.run/Lint format.run.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Lint format" type="GradleRunConfiguration" factoryName="Gradle">
<ExternalSystemSettings>
<option name="executionName" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="externalSystemIdString" value="GRADLE" />
<option name="scriptParameters" value="" />
<option name="taskDescriptions">
<list />
</option>
<option name="taskNames">
<list>
<option value="ktlintFormat" />
</list>
</option>
<option name="vmOptions" />
</ExternalSystemSettings>
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
<DebugAllEnabled>false</DebugAllEnabled>
<method v="2" />
</configuration>
</component>
18 changes: 14 additions & 4 deletions app/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: "androidx.navigation.safeargs.kotlin"
apply plugin: 'com.google.protobuf'
apply plugin: 'com.mikepenz.aboutlibraries.plugin'
apply plugin: 'kotlin-parcelize'

protobuf {
protoc {
Expand Down Expand Up @@ -35,14 +37,14 @@ if (apiPropertiesFile.exists()) {

android {

compileSdk 32
compileSdk 33

defaultConfig {
applicationId "com.github.livingwithhippos.unchained"
minSdk 22
targetSdk 32
versionCode 32
versionName "4.40.2-beta"
targetSdk 33
versionCode 33
versionName "4.51.4-beta"
// limit resources for a list of locales
// resConfigs "en", "it"

Expand Down Expand Up @@ -242,6 +244,7 @@ dependencies {

//hilt
implementation deps.dagger.hilt_android
implementation deps.dagger.hilt_navigation
kapt deps.dagger.hilt_compiler

// paging
Expand All @@ -256,9 +259,16 @@ dependencies {
//jsoup
implementation deps.jsoup

// work manager
implementation deps.work.core

// countly
debugImplementation deps.countly

// about
implementation deps.aboutlibraries.core
implementation deps.aboutlibraries.ui

// test
androidTestImplementation deps.test.core_ktx
androidTestImplementation deps.test.rules
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,4 +51,4 @@ fun waitForView(viewId: Int, timeout: Long): ViewAction {
.build()
}
}
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.action.ViewActions.click
import androidx.test.espresso.action.ViewActions.replaceText
import androidx.test.espresso.assertion.ViewAssertions.doesNotExist
import androidx.test.espresso.assertion.ViewAssertions.matches
import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
import androidx.test.espresso.matcher.ViewMatchers.isRoot
Expand All @@ -18,7 +17,6 @@ import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith


/**
* Test setup: run this once and then edit the generated configuration:
* 1. Add your private token as an Instrumentation argument called TOKEN (maybe don't use your main account)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,4 @@ object TelemetryManager {

Countly.sharedInstance().init(config)
}
}
}
Loading

0 comments on commit 1c9b8a1

Please sign in to comment.