Skip to content

Unofficial Douban app mainly for browing Groups, as well as discovering/tracking Subjects (WIP 🚧,书影音). Session login is supported. (豆瓣非官方app)

Notifications You must be signed in to change notification settings

Bumblebee202111/doubean-public

Repository files navigation

doubean

An unofficial Douban app mainly used for browsing the Groups section. Subjects development is just started. (豆瓣非官方app,主要用于小组浏览。书影开发才刚刚开始。)

Note: I am an inexperienced Android beginner and the only developer of it. Occasional crashes may happen, UI design may be incomplete and features you need may be missing. This project implements some essential features as well as user requested ones which are practical. It is also going to be used as my playground for trending technologies such as Jetpack Compose. This brings tons of migration tasks (remaining ones), and also means that old and new libraries are currently mixed.

The development of this app is slowed down again so that I can spend more time on the exploration of the backend and frontend areas.

Known issues:

  • The last vertical scroll position of selected tab in Group Detail Screen is always lost (reset) when returned from Topic Detail Screen, since Navigation Compose migration, v0.6.3(603).

Introduction

Screens

Statuses Screen

  • Following statuses

Subjects Screens

(no lists are paginated yet)

Home Screen
  • Top 250 Movies/Books
  • My movie/tv/book statuses
Interests Screen
  • My subject statuses with interests

Groups Screens

Home Screen
  • My groups
  • Favorite groups and tabs
  • My topics (or groups of the day, for guests)
Group Detail Screen
  • Group information
  • Group tabs
Topic Detail Screen
  • Topic content
  • Topic comments
Reshare Statuses Screen
  • Reshare statuses
Groups Search Screen
  • Search groups
  • Groups of the day
Notifications Screen
  • Group topic notifications (this feature is broken now)

Profile Screen

  • Login status

Image Screen

  • Image view and save

Login Screen

  • Session login
    • Guide
    • Manual submission

Screenshots

phone_subjects phone_search_subjects tablet_interests phone_groups phone_group_detail phone_group_search phone_post_detail

Getting Started

Using this app

  • Supported Android versions: 8.1 - 14
  • Sometimes you need to manually clear app data after installation when I forget to handle ROOM database schema change
  • Feel free to file issues

Open-source?

To not get this project/myself into trouble, the update of the source code in the public repo has been suspended. However, the latest release is always available, and I'm willing to share the part of the code that you are interested in if it does not qinquan that much.

Who is it for?

  • Me and other developers who are learning Android, Kotlin and version control
  • Me and other users who desire easier access to Douban, especially the Groups module of it.

Your do's and don'ts

  • Please use it only for personal learning purposes.
  • Please don't share it on other websites/apps without permission.

Features

It not only implements some features (mainly of Groups) of Douban app, but also has its own features.

  • Partial offline caching support
  • Ad-free, lite (~4MB)
  • Partially support URL deep links
  • Rooted users can reuse login session of Douban app
  • Partial support for viewing content in Douban WebView optimized for mobile reading in case of need (no longer updated)
  • Basic use of MD2/3 (UI may not look good during migration)
  • Provides simple type-based Subjects (书影音) experience including support of user actions (WIP 🚧)
  • Recommended topic notifications (broken)

Libraries Used

Plans

Incoming features, bug fixes, libraries to use and environment changes (roughly in chronological order)

To-dos for current release (0.7.5)

To-dos for next release (0.7.6)

  • Subject detail screen

Future plans

  • Gradually revert naming conventions to those of Douban
  • Gracefully remove Fragments: First reduce usages of Fragment methods
  • Gradual migrations:
    • From MD2 / custom design to MD3
    • From View and Data Binding to Jetpack Compose
      • Exceptions: WebView/RatingBar/PreferenceFragmentCompat/CollapsingToolbarLayout/Spinner
  • Subjects (书影音)
    • Show a glimpse of T250 instead in MoviesScreen/BooksScreen with book/movie module data and add a separate T250Screen
    • (Single-)status interests screen & its pagination
    • T250 pagination
    • More details & sub-features
  • Reuse item logic of search result groups / groups of the day
  • Fix the "known issue" above after researching on the Subjects tab, a simpler case of TabRow + HorizontalPager + LazyList + Pagination + Navigation Compose
  • Groups - Home
    • Support pagination?
    • Add favorite tabs for topic list area
  • Status bar color
  • Show error messages
  • Bring back load state visualization which was removed for simplicity during various types of migrations
    • Paging 3 refresh, loading status ...
  • Subscribe/favorite/save
    • Save topics
    • Pin my groups
    • Add corresponding item actions
  • Allow expanding group descriptions
  • Bring back basic support for dark mode & landscape experience
  • Shared element
  • Group tab: Track read
  • Use the new nullable "edit_time" property of network topics
  • Search
    • Search group/tab topics (in-group)
    • Search topics of all groups (global)
  • Better model layering
  • Languages
    • Translations
    • Pick language
  • Group Detail
    • Compose collapsing toolbar when API is more convenient to use
    • Collapse on entrance for the subscribed/favorited group/tab
  • Lazylist problems
    • Restoration of scroll position is problematic
  • Topic content WebView problems
    • Flinging up to topic content is not smooth https://issuetracker.google.com/issues/172029355
    • Sometimes topic content fails to be loaded on some low-end or large-screened devices, or of special layout (not sure which sets constraint)
    • LazyLayoutPinnableItem?
    • ...
  • Topics feed notifications
    • Find why it is broken and fix it
    • Clarify:
      • Improper use may disturb you and drain phone battery (untested)
      • Better keep app in background
      • Mechanism: Actively query group topics (without tab_id parameter, to increase efficiency) by each group
    • “每次动态更新请求的帖子总数限制” -> ?
    • Create reusable class for all topic notification settings
  • More subscribe/favorite/save
    • Save comments
    • Subscribe topics
    • Sync custom lists by maintaining a fake private note which holds the data
    • Custom feeds like Reddit
  • Groups: Group/tab/topic shortcuts
  • Hide officially-marked unfriendly content by default
  • Support blocking unfriendly content
  • NetworkManager
  • Widgets
  • Lists: Reddit-like item expand/collapse
  • Group Detail: For topic items, optimize tag display, e.g., assign color to each tag mapped from ID
  • Reuse more existing Douban preferences
  • Independent login (seems impossible)
  • Find API for all followed topics (seems impossible)
  • Group Detail: WebView for group
  • Statueses (in maintanence state now, only when requested)
    • More card types
    • Pagination
  • Test

Non-Todos

  • Heavy use of Material Design

References

Utilities

Stars ⭐ & Donation ☕

I'm totally aware that this app is mediocre. However, the increasing number of stars keep me motivated! Thank you!

If you find it really useful and would like to buy me a coffee, which I am not ready for, please contact me by creating an issue.

About

Unofficial Douban app mainly for browing Groups, as well as discovering/tracking Subjects (WIP 🚧,书影音). Session login is supported. (豆瓣非官方app)

Topics

Resources

Stars

Watchers

Forks

Languages