Skip to content
This repository was archived by the owner on May 31, 2023. It is now read-only.

Commit b725afd

Browse files
author
Hiroki SAKABE
committed
自分の投稿したレビューを一覧で確認する機能を追加
1 parent 204491e commit b725afd

3 files changed

Lines changed: 90 additions & 3 deletions

File tree

lambda/app/bee_slack_app/view/home.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ def home( # pylint: disable=too-many-locals
1616
post_review_action_id: str,
1717
list_user_posted_review_action_id: str,
1818
user_info_action_id: str,
19+
list_posted_review_action_id: str,
1920
total_review_count: int,
2021
user_name: str,
2122
recommend_timestamp: str,
@@ -30,6 +31,7 @@ def home( # pylint: disable=too-many-locals
3031
post_review_action_id: 「レビューを投稿する」ボタンのaction_id
3132
list_user_posted_review_action_id: 「レビューを投稿したユーザ」ボタンのaction_id
3233
user_info_action_id: 「プロフィール」ボタンのaction_id
34+
list_posted_review_action_id: 「投稿したレビュー」ボタンのaction_id
3335
total_review_count: 表示する「レビュー投稿数」
3436
user_name:表示する「ユーザ名」
3537
recommend_timestamp:MLのjsonファイルを作成した日時
@@ -172,6 +174,16 @@ def home( # pylint: disable=too-many-locals
172174
"value": "dummy_value",
173175
"action_id": user_info_action_id,
174176
},
177+
{
178+
"type": "button",
179+
"text": {
180+
"type": "plain_text",
181+
"text": "投稿したレビュー",
182+
"emoji": True,
183+
},
184+
"value": "dummy_value",
185+
"action_id": list_posted_review_action_id,
186+
},
175187
],
176188
},
177189
{"type": "divider"},

lambda/app/bee_slack_app/view_controller/home.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ def update_home_view(ack, event, client):
6565
recommended_books=recommended_result["recommended_books"],
6666
list_user_posted_review_action_id="list_user_posted_review_action",
6767
user_info_action_id="user_info_action",
68+
list_posted_review_action_id="list_posted_review_action",
6869
total_review_count=total_review_count,
6970
user_name=user_name,
7071
recommend_timestamp=parse(recommended_result["created_at"]),
@@ -126,6 +127,7 @@ def home_move_to_next_action(ack, client, body): # pylint: disable=too-many-loc
126127
recommended_books=recommended_result["recommended_books"],
127128
list_user_posted_review_action_id="list_user_posted_review_action",
128129
user_info_action_id="user_info_action",
130+
list_posted_review_action_id="list_posted_review_action",
129131
total_review_count=total_review_count,
130132
user_name=user_name,
131133
recommend_timestamp=parse(recommended_result["created_at"]),
@@ -187,6 +189,7 @@ def home_move_to_back_action(ack, client, body): # pylint: disable=too-many-loc
187189
recommended_books=recommended_result["recommended_books"],
188190
list_user_posted_review_action_id="list_user_posted_review_action",
189191
user_info_action_id="user_info_action",
192+
list_posted_review_action_id="list_posted_review_action",
190193
total_review_count=total_review_count,
191194
user_name=user_name,
192195
recommend_timestamp=parse(recommended_result["created_at"]),
@@ -269,6 +272,7 @@ def handle_update_button_action(
269272
recommended_books=recommended_books,
270273
list_user_posted_review_action_id="list_user_posted_review_action",
271274
user_info_action_id="user_info_action",
275+
list_posted_review_action_id="list_posted_review_action",
272276
total_review_count=total_review_count,
273277
user_name=user_name,
274278
recommend_timestamp=parse(recommended_result["created_at"]),

lambda/app/bee_slack_app/view_controller/user.py

Lines changed: 74 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@
33

44
from slack_bolt import App
55

6-
from bee_slack_app.model import User
7-
from bee_slack_app.service import user_action_service, user_service
8-
from bee_slack_app.view import user_profile_modal
6+
from bee_slack_app.model import Review, ReviewPagination, User
7+
from bee_slack_app.service import review_service, user_action_service, user_service
8+
from bee_slack_app.view import review_of_user_modal, simple_modal, user_profile_modal
9+
10+
BOOK_NUMBER_PER_PAGE = 20
911

1012

1113
def user_controller(app: App) -> None:
@@ -94,6 +96,75 @@ def handle_submission(ack, body, _, view):
9496
payload={"user": user},
9597
)
9698

99+
@app.action("list_posted_review_action")
100+
def list_posted_review_action(ack, body, client):
101+
ack()
102+
user_id = body["user"]["id"]
103+
104+
review_items = review_service.get_next_reviews_by_user_id(
105+
user_id=user_id, limit=BOOK_NUMBER_PER_PAGE, keys=[]
106+
)
107+
108+
reviews = []
109+
110+
if review_items:
111+
reviews = review_items["items"]
112+
reviews = _make_review_contents_list_comment_short(reviews)
113+
114+
reviews_param: ReviewPagination = {
115+
"reviews": reviews,
116+
"show_move_to_back": False,
117+
"show_move_to_next": review_items["has_next"],
118+
}
119+
# メタデータに変換する
120+
metadata_str = _PrivateMetadataConvertor.to_private_metadata(
121+
keys=review_items["keys"],
122+
)
123+
124+
user_action_service.record_user_action(
125+
user_id=user_id,
126+
action_name="list_posted_review_action",
127+
payload={"reviews": reviews},
128+
)
129+
130+
if not reviews:
131+
client.views_open(
132+
trigger_id=body["trigger_id"],
133+
view=simple_modal(title="エラー", text="レビュー取得でエラーが発生しました"),
134+
)
135+
return
136+
137+
client.views_open(
138+
trigger_id=body["trigger_id"],
139+
view=review_of_user_modal(
140+
callback_id="review_of_user_modal",
141+
reviews_param=reviews_param,
142+
private_metadata=metadata_str,
143+
),
144+
)
145+
146+
147+
def _make_review_contents_list_comment_short(
148+
review_contents_list: list[Review],
149+
) -> list[Review]:
150+
"""
151+
レビューのコメントを、一覧表示用に短くする
152+
"""
153+
comment_len = 20
154+
155+
for review_contents in review_contents_list:
156+
review_comment = review_contents["review_comment"]
157+
if review_comment:
158+
review_contents["review_comment"] = (
159+
review_comment[0:comment_len] + "..."
160+
if len(review_comment) > comment_len
161+
else review_comment
162+
)
163+
else:
164+
review_contents["review_comment"] = "-"
165+
166+
return review_contents_list
167+
97168

98169
class _PrivateMetadataConvertor:
99170
class _MetadataDict(TypedDict):

0 commit comments

Comments
 (0)