Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

友達を指定して一緒にチェックインできるようにする #183

Open
private-yusuke opened this issue Jul 15, 2023 · 1 comment
Labels
enhancement New feature or request

Comments

@private-yusuke
Copy link
Owner

概要

Swarm アプリには、友達を指定して同時にチェックインするための機能がある。これと同等の機能を実装できると、友達を巻き込んで交差点にチェックインできるようになり、より便利である。特に運転手がチェックインできないときに助手席で交差点にチェックインしやすくなる。

実装するもの

以下の実装が必要である。

  • 友達一覧取得 API のクライアント
  • チェックイン作成 API で友達を指定できるクライアント
  • 友達選択画面
  • MainScreen での選択した友達の状態の保持

友達一覧取得 API のクライアント

具体的な API エンドポイントは後で調べる。
:library:foursquareclientpub.yusuke.foursquareclient.network 以下に FriendApiService を作成する。

チェックイン作成 API で友達を指定できるクライアント

以下の箇所に変更を加え、HTTP リクエスト内で友達を指定する。

@POST("/v2/checkins/add")
@Headers("Accept: application/json")
suspend fun createCheckin(
@Query("oauth_token")
oauthToken: String,
@Query("venueId")
venueId: String,
@Query("ll")
ll: String? = null,
@Query("shout")
shout: String? = null,
@Query("mentions")
mentions: String?,
@Query("broadcast")
broadcast: String?,
@Query("v")
v: String? = "20221002",
): CreateCheckinResponse

友達選択画面

友達一覧を取得するための API を CheckinApiService から呼び出せるようにする。
この画面に遷移するとき、引数として友達のリストを渡せるようにすること。また、この画面から返す結果は、同じ型の友達のリストとすること。
なお、画面間で共有する友達の型は navigation パッケージ以下に定義すること。

余裕があれば、instrumentation test で以下のことを検証する。

  • 引数で渡した友達が画面を開いた時点で選択されていること
  • 画面内で選択した友達が結果に包まれて帰ってくること

MainScreen での選択した友達の状態の保持

MainScreen では、友達選択画面で選択した友達の状態を保持し、またその状態と共に友達選択画面への遷移ができるようにする。
また、チェックインを作成する際には、その状態を見て一緒にチェックインする友達を指定してチェックインできるようにする。

なお、チェックイン作成前後で友達のリストは変化しない。

余裕があれば、instrumentation test で以下のことを検証する。

  • 選択した友達がチェックイン時に ViewModel のメソッド checkIn に渡されていること
@private-yusuke
Copy link
Owner Author

この機能を一気に作るのは難しいので、#184 で友達一覧が見られる画面をまず作成する。MainScreen との状態のやり取りは別 PR で実装する。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant