From d8b59bf7b449f34c38829fa5135f3088722fc2aa Mon Sep 17 00:00:00 2001 From: Aria Moradi Date: Sun, 14 Jun 2020 00:38:09 +0430 Subject: [PATCH] [CI SKIP] add some points to CONTRIBUTING.md (#3513) * [CI SKIP] add some points to CONTRIBUTING.md * [CI SKIP] Getting help section * Update CONTRIBUTING.md Co-authored-by: arkon --- CONTRIBUTING.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5ef99a148..6a0d100f4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -17,6 +17,10 @@ Before you start, please note that the ability to use following technologies is - [Android Studio](https://developer.android.com/studio) - Emulator or phone with developer options enabled and a recent version of Tachiyomi installed +## Getting help + +- Join [the Discord server](https://discord.gg/tachiyomi) for online help and to ask questions while developing your extension. +- There are some features and tricks that are not explored in this document. Refer to existing extension code for examples. ## Writing an extension @@ -134,6 +138,7 @@ a.k.a. the "Latest" source entry point in the app. - `getFilterList` will be called to get all filters and filter types. **TODO: explain more about `Filter`** - When the user searches inside the app, `fetchSearchManga` will be called and the rest of the flow is similar to what happens with `fetchPopularManga`. +- If search functionality is not available, return `Observable.just(MangasPage(emptyList(), false))` #### Manga Details @@ -141,6 +146,7 @@ a.k.a. the "Latest" source entry point in the app. - `fetchMangaDetails` is called to update a manga's details from when it was initialized earlier - Note: During a backup, only `url` and `title` are stored, and to restore the rest of the manga data the app calls `fetchMangaDetails`, so all fields should be filled in if possible. - `fetchChapterList` is called to display the chapter list. This should be sorted descending by date. +- `SManga.initialized` tells the app if it should call `fetchMangaDetails`. If you are overriding `fetchMangaDetails`, make sure to pass it as `true`. #### Chapter @@ -150,13 +156,15 @@ a.k.a. the "Latest" source entry point in the app. - When user opens a chapter, `fetchPageList` will be called and it will return a list of `Page`s. - While a chapter is open the reader will call `fetchImageUrl` to get URLs for each page of the manga. +- Chapter pages start from `0`. +- If `Page.imageUrl`s are available immediately, you should pass them here. Otherwise, you can set `page.url` to a empty string and override `imageUrlParse` to fill those `imageUrl`s. ### Misc notes -- Sometimes you may find no use for some inherited methods. If so just override them and throw exceptions: `throw Exception("Not used")` +- Sometimes you may find no use for some inherited methods. If so just override them and throw exceptions: `throw UnsupportedOperationException("Not used.")` - You probably will find `getUrlWithoutDomain` useful when parsing the target source URLs. - If possible try to stick to the general workflow from `HttpSource`/`ParsedHttpSource`; breaking them may cause you more headache than necessary. - +- By implementing `ConfigurableSource` you can add settings to your source, which is backed by [`SharedPreferences`](https://developer.android.com/reference/android/content/SharedPreferences). ## Running