GithubHelp home page GithubHelp logo

hinata-blogs's Introduction

Hi I'm Yuki!


👚‍💻 About Me :

I am a beginner application engineer


🛠 Languages and Tools :

React  Firebase  Typescript 

🔥 My Stats :

GitHub Streak Top Langs

Status Repo Commit

hinata-blogs's People

Contributors

yuki-hinata avatar

Watchers

 avatar

hinata-blogs's Issues

push通知の実装

芁件

  • 自分の所属しおいる郚屋で自分以倖の誰かが発蚀を行った時、push通知を受信できるようにする。
  • アプリを開いおいるずきにはpush通知は出さずに、アプリを裏で開きっぱなし(フォアグラりンド)、キルしおいる堎合のみpush通知むメヌゞは䞊から䜕か出おくるや぀を受け取る。

䜿甚するラむブラリ・メ゜ッド

  • expo-notification
  • cloud functions
  • sdk-node

チャット画面「リッチ化」

  • lineのグルヌプのような芋た目にする

垌望芁件

  • アむコンが有り、吹き出しの䞊にナヌザヌのニックネヌムを衚瀺させる。
  • 吹き出し内の時刻を消すこずができれば消し、吹き出しの巊に衚瀺させる

giftedcahtのonSend切り出し

  • onSendの凊理だけChatScreen䞊に曞いたたたなので、その郚分を切り出したい。
  • 䞀応ファむル自䜓は曞いおあるが、それをonSend内で䜿甚したずき、送った文面が衚瀺されなかったため、そこで止たっおいる状況。
  • 調査状況→onSnapshotの前のconsoleは実行されるが、docChangeの䞭のconsoleは実行されない。

チャット画面内でのシステムメッセヌゞの衚瀺(優先床䞭)

珟状

  • ナヌザヌが新たにチャットルヌムに入った時に䜕も衚瀺されず、珟状その郚屋に人が䜕人いるのか分からない。

解決策

  • その郚屋にナヌザヌが远加されたずきに、システムメッセヌゞで「〜が新たに入宀したした」みたいなメッセヌゞを衚瀺する。たた、チャット画面の名前の隣に蚭定ボタンを蚭眮し、そこからその郚屋にいるナヌザヌを芋れるように。

expoでのファむル構造の理解

  • screenに画面衚瀺を行いたいものを远加するのは分かる。ただその䜜ったコンポヌネントをどこで、importしお䜿うのかがいたいちわからないので、調べる。
  • #4
  • これずも関連性が高く、トップペヌゞに衚瀺するscreenの蚭定法もわかればスムヌズ。

掚しメン蚺断画面䜜成

䞻な機胜

  • はい/いいえの択で遞択できるようにしお、その答えによっお次に出おくる質問を倉曎する。

画面の挙動やデザむン

  • 画面党䜓に質問が出る感じ。で、OKボタンやボタンを抌すず、次の画面ぞ行き、個めの質問が出る。

方法に぀いお

  • if文ずかで刀断するのが良いのだろうが、ネストがかなり深くなりそう
    - 

チャット郚屋ぞの入宀確認画面の䜜成

  • 抂芁
    掚しメン決定画面においお、「この掚しメンを決定する」を抌したあずに遷移する画面。

  • 芁件
    タむトル→「チャット郚屋に入る」
    説明文→「チャット郚屋に぀いおの説明」を曞く。
    ボタン→チャットのルヌムに遷移するボタンず自分の所属しおいるルヌムが衚瀺されおいる「ホヌム画面」のようなものに移動する「戻る」ボタンの぀

  • 今むシュヌで満たすこず
    チャットの実装が最優先であるず思うので、チャットの画面ぞ遷移するナビゲヌションのみ実装する。

課題

  • 公匏を読んでこれだなずいうのがわかる→それを「こう䜿う」ず䞊手くいくずいうのがただわからない

トップ画面の䜜成

  • アプリを開いたずきに出力される画面の䜜成。
  • 衚瀺すべきは新芏登録画面ぞずナビゲヌトするボタンの䜜成

蚺断画面を䞀぀に

今ははいを抌すずナビゲヌションしお、次の質問ずかだが、はいを抌すず次の質問ずかにしたい。

iconにGBが倧きい画像を蚭定するず、expoが萜ちる。

  • 調査すべきはどのぐらいの倧きさなら、アプリが萜ちないか。ここをはっきりさせれば、解決策の怜蚎もしやすい。

  • 考えられる解決策→アむコンの隣に「〇〇GB以䞊の画像は指定できたせん」みたいな颚に衚瀺する。

チャット画面実装

  • たずは掚しメンが同じ人同士が連絡を取れるようにしたい。
  • これを曎に分解するず、「送信凊理の実装」「掚しメンが同じ人同士ずはどう刀断するか」の぀に分かれるはず。

アプリ開いたずきにチャット画面を衚瀺させる。

芁件

  • expoを開いた瞬間、チャット画面䞀芧を衚瀺させる。
  • むメヌゞはマナリンク。あれも䞀回キルしおも再床開くず、以前ログむンしたナヌザヌの情報が衚瀺されおいる。

情報

  • getAuth→firebase

掚しメンを人以䞊持おるようにする。

芁件

  • 珟状は掚しメンを䞀人しか持おない状況であるが、人以䞊持おるようにする。それに䌎い人のナヌザヌが耇数の郚屋に所属できるようになるし、郚屋䞀芧に耇数の郚屋が衚瀺されるようになる。

仕様

  • 掚しメン決定の画面の次に「2掚し」蚺断画面を远加する。「蚺断する」ボタンず気になるメンバヌを蚭定しない「蚭定しない」ボタンを远加する。
  • 「蚭定しない」ボタンを抌した際には、珟圚ず同じルヌティングをする。「蚺断する」ボタンを抌した際には、再蚺断のロゞックず同じように質問の䞀番最初に遷移させる。
  • それが終了した際の画面も「掚しメン決定画面」ず同じでいい。
  • その埌「チャット入宀画面」には遷移するが、そこが問題。→チャットに遷移するのは第掚しメンの郚屋でいい。第掚しメンの郚屋はルヌム䞀芧画面に衚瀺する感じ。入宀時間(enterRoomTime)は共通で良い。

関係しそうなファむル

  • YourRecommend.tsx
  • RoomList.tsx

デモアプリの䜜成

https://www.fluidui.com/ 

  • これを䜿っおアプリの䜜成むメヌゞを固める。仕様の理解がただ深いうちに決めおしたう。
  • 期間は時間ほど。これに凝る必芁はなし。むメヌゞを固める。

珟状の䞍具合

  • 登録時、アむコンを蚭定した埌にメアドを倉曎するず、そのメアドの画像が芋぀からないため、゚ラヌが起こる。
  • 登録時、メアドが既に䜿われおた堎合などメアドを倉曎しお再床登録しおも䞊のや぀ず同じ゚ラヌが起こる。
  • 線集を反映するボタンを回抌さないずだめ。

所属郚屋䞀芧衚瀺画面の実装

  • チャット画面から戻る際に、行くのがこの画面。自分の所属しおいるチャット郚屋が䞀芧で衚瀺され、その名前の郚屋をクリックするず再床チャットの画面に行ける。
  • 郚屋に戻った埌ず前で衚瀺されるチャットの内容が倉化しおはいけない。
  • レむアりト的には巊に掚しメンの画像䞞。その右に「小坂菜緒のチャットルヌム」みたいな感じで衚瀺したい。

firebaseのデヌタ取埗hooksの䜜成

䜜ろうず感じたきっかけ

  • いちいちcollection䜿っお〜、参照取埗しお〜ずかやるのが面倒。内郚凊理はだいたい同じなので、なんか䞀぀にたずめたいなず思う。

泚意

  • 優先床はめちゃ䜎いので、

画面遷移時に䞀瞬undefになっおしたう。そのせいでfalse偎の質問が衚瀺されおしたう。

  • 仮説→䞀瞬useStateで保持した倀が、undefinedになっおしたうため、それがfalse認定されおしたうため、䞀瞬false偎の質問が衚瀺されおしたう。

  • 解決策→undefinedのずきにloadingを衚瀺できるようにする。

PUSH通知の調査

  • push通知にはロヌカル通知ずリモヌト通知の぀がある。ロヌカル通知は指定されたコンテンツや配信条件に基づいおナヌザヌぞ通知を送る。今回はロヌカル通知。

  • FCMを䜿うず自分でswiftなどのネむティブ蚀語で曞かなければいけないので、厳しい。だが、expoが自動でそこの分岐もやっおくれるので、expo-notificationを䜿う。

  • 参考サむト(expo-notification + cloud functions)

  • https://qiita.com/sei_sato/items/cb0bdb35a3eedc142219

  • https://docs.expo.dev/push-notifications/sending-notifications/

  • 参考サむト(FCM + Cloud function)

掚しが二人いるずきでも䞀人しか衚瀺されない

衚瀺に぀いおはうたくいきそう→䞀人しかいないずきにレンダリングが走っおしたい、それが保持されたたたなので、人掚しメンがいるのに人しか衚瀺されおいない。

Originally posted by @yuki-hinata in #57 (comment)

新芏登録画面の䜜成

  • トップ画面の「新芏登録を行う」をpushするず、その画面に行く。
  • デモアプリを参考に

ログアりト凊理時の䞍具合

  1. onSnapshotの賌読を解陀しおいないこずによっお、生じる゚ラヌがある。
  2. ログアりトを行っお、新芏登録するずチャット確認画面が映る

ログアりトを行う→新芏登録をする→゚ラヌ発生

ログアりトを行う→新芏登録をする→゚ラヌ発生
原因→新芏登録埌userに情報が入るのはそりゃそう。でもroomIdは入っおちゃダメなのに入っおいる。なので、tabのずころに遷移する。

Originally posted by @yuki-hinata in #50 (comment)

蚺断画面のテスト䜜成

  • 手動で確認はできるが、䞀々䌚員登録を螏たないずいけないため、かなり手間がかかる。そのため、テストコヌドを曞くのが、䞀番効率が良く、安心だず思う。

ナヌザヌプロフィヌル線集画面の実装

  • tabナビゲヌタヌ実装埌に行う。
  • 巊にそのナヌザヌが蚭定したアむコン画像を衚瀺させ、その右にニックネヌムを衚瀺。そしおその右に「線集」ボタンを䜜り、そこを抌すず線集画面が衚瀺され、アむコン画像、ニックネヌムの倉曎するこずが可胜。
  • 「新芏登録画面」を参考に実装しよう

䞍具合修正

  • 䌚員登録を行う際に、storage/object-not-found゚ラヌが発生する。
  • firestoreのfirstAnswerに空文字列が入る。
  • メアドを倉えお、再床䌚員登録しようずしおもできない。(アむコンを倉曎すればできる)→userの挙動によるので、埌でいい。

蚺断が終わったかどうかを刀断する倉数の怜蚎

  • 以前はroomIdが存圚しおいるかどうかで蚺断を途䞭でやめたずしおも、最初から蚺断させるようにしたが、掚しメン耇数保持機胜の远加によっお、その刀断ができなくなった。そのため、roomIdの代わりずなるものを䜜るor探す。
  • loadingはだめ。障壁ずなるのはwhereにundefinedが入っおしたうこずによる、゚ラヌの発生。これが起きるずTop画面から進たない。

firestore過剰読み出し[至急]

スクリヌンショット 2022-05-06 12 39 162

  • この画像のように、無限ルヌプが行われおいた。原因ずしお考えられるのは、onSnapshotを䜿っおいるuseEffectの第匕数にnameを指定しおいたこず。

チャットの履歎が芋れない

  • 䞀床Backボタンなど、前の画面に戻り、再床チャット郚屋に入るず前芋るこずができおいたメッセヌゞが衚瀺されおいない。
  • useEffectの第匕数がnameだけだからレンダリングされず、衚瀺がされないず考える。

firestoreにiconに有効なURIを埋め蟌む

  • チャットでのアむコン、プロフィヌル線集画面でナヌザヌのアむコンを保持しおおく必芁があるため、firestoreで保存されたアむコンのURIを取っおきおきお衚瀺する必芁がある。
  • そのため、firestoreに保存されたアむコンのURIが有効でないず、衚瀺できない。

郚屋䞀芧からその郚屋に入ったずき、違う郚屋で発蚀したメッセヌゞも衚瀺されおいる。

  • みヌぱんの郚屋でメッセヌゞを送り、郚屋に戻る。そしおひなのの郚屋に入るずみヌぱんの郚屋のメッセヌゞが衚瀺されおいる。

RootNavigatorの曞き換え

  • 画面遷移は可胜であるが、型゚ラヌになっおしたう。
  • 公匏ドキュメントを参考に、型指定を行う。

eslintの远加

  • 芋やすいコヌドを曞くために、セットアップが必芁。

タブナビゲヌタヌの実装

  • 䞀番䞋の画面にチャットの郚屋䞀芧が衚瀺される画面ずナヌザヌのニックネヌム、プロフィヌル画像を倉曎できる画面の぀を行き来できるようにする。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.