Blockchain code Metaverse VR

SmartContract×VR×Crypto(571)

スポンサーリンク

//tips

夜の仮眠による分割睡眠はどうか、または睡眠改善薬で単一睡眠を強化するか。

//smart contract

Whereの条件二つ分userid==1 or Towhom==“1”出取得したデータのを融合作業をしていく。

export const getStaticProps の中身の改良。

二つの条件を融合させるために別のメソッドを経由して

.then(result => {
result.forEach(docSnapshot => {

での展開を実行させる。

融合用の別メソッドの作成。

async function getIsBoth() {
const colRef= await collection(firebaseApp, "directmessage")

const isTo = colRef.where('userid', '==', id).get();
const isFrom = colRef.where(‘Towhom, '==', context.params.id).get();

const [isToQuerySnapshot, isFromQuerySnapshot] = await Promise.all([
isTo,
isFrom
]);

const isToArray = isToQuerySnapshot.docs;
const isFromArray = isFromQuerySnapshot.docs;

const ToFromArray = isToArray.concat(isFromArray);

return ToFromArray;
}

そこまで記述量は多くなかったのでgetStaticPropsにメソッドをそのまま導入してしまう。

export const getStaticProps = async (context) => {

let posts = []

const id = parseInt(context.params.id)

const colRef= await collection(firebaseApp, "directmessage")

const isTo = colRef.where('userid', '==', id).get();
const isFrom = colRef.where('Towhom', '==', context.params.id).get();

const [isToQuerySnapshot, isFromQuerySnapshot] = await Promise.all([
isTo,
isFrom
]);

const isToArray = isToQuerySnapshot.docs;
const isFromArray = isFromQuerySnapshot.docs;

const ToFromArray = isToArray.concat(isFromArray);

// const q = await query(colRef,where("userid","==",id))

//await getDocs(q)
await ToFromArray
.then((snapshot)=>{

snapshot.docs.forEach(doc => {
const data = doc.data()
console.log('data.title')

これでninjaには自身が送付側の場合と受取側の場合の両方の情報を取ることができる。

{ninja.map((item,index) => (にて受取側の情報も表示されるかの確認。

colRef.where('userid', '==', id).get();でエラーが出たので最新表記に変更。

下記で試す。

const isTo = query(colRef,where("userid","==",id)).get();
const isFrom = query(colRef,where('Towhom', '==', context.params.id)).get();

.get()部分がエラー。次にconcatでエラー。

新バージョンのfirestorageに通用しない。

一旦元の形に戻し、snapshot.docs.forEach(doc => {の中でデータを選別することにする。

await getDocs(colRef)
.then((snapshot)=>{

snapshot.docs.forEach(doc => {
const data = doc.data()
console.log('data.title')

const pile={}
if(data.userid==id||data.Towhom==context.params.id){

Towhomにて記載されている部分がきちんと表示されない。data.Towhom==context.params.idのデータがきちんと取れていないようなのでログの確認。

ログにも出ていないのでデータベースを確認してみるとTowhomのみが1のものが削除されていた。こちらを復元すると無事に表示させることができた。

ここからさらに時間の順番に表示を並び替えていく。

時間を取得しようとしたところ配列に格納されていなかったので追加。

pile.date = data.date ?data.date:null

以前使用したsortを活用。

let ninjav = ninja.sort(function(a, b) {
return (a.cardorder < b.cardorder) ? -1 : 1; //オブジェクトの昇順ソート
//return (a.cardorder > b.cardorder) ? -1 : 1; //オブジェクトの降順ソート
});

これを応用し、

{ninjav.map((item,index) => (
<div key={index} >
<Typography className={classes.titlebackshape}>
{item.username}: {item.Message}:{item.date}
</Typography>
</div>
))
}

こちらにてきちんと順番にメッセージを表示させることができた。

さらにここからTowhomがある場合には表示を分岐させるようにさせる。

{ninjav.map((item,index) => (
<div key={index} >
{item.userid==localStorage.getItem('authuserid')
?
<Typography className={classes.titlebackshape}>
{item.username}: {item.Message}:{item.date}:right
</Typography>
:

<Typography className={classes.titlebackshape}>
{item.username}: {item.Message}:{item.date}
</Typography>
}

localStorage.getItem('authuserid’)でエラーが発生。

見直していてまずいと気がつく。

というのも既にメールのみでの運用に特化しているためlocalStorage.setItem('authuserid',ninja[0].userid)は成立しない。

Messageページでは自身のidはauthuseridとして取り出して運用する必要がある。

localStorage.setItem('authuserid',ninja[0].userid)の記述は削除。

代わりに変数に詰め込む。
const [authid, setauthid] = useState('')

useEffect(() => {
// if(localStorage.getItem('authhistory')==ninja[0].mail){ localStorage.setItem('authuserid',ninja[0].userid)}
setauthid(localStorage.getItem('authuserid'))
}
, [])

{item.userid==authidとしてきちんと分岐させることができた。これで発言者が自分か相手かを視覚的に区別できる。

さて、ここでuser1に関するメールの全てとその送受信の立場を確認することができたので、一対一のメッセージ関係にメッセージを分離させていく必要がある。

メッセージの抜き出しに会話主の制限を加えるので、遷移してきた場合には、下記二つのuseridに該当しないものは弾く必要がある。

{item.userid==localStorage.getItem('authuserid')&&(
{item.userid==localStorage.getItem('Towhom')&&(

遷移してきた場合ではなく、直にメッセージページにきた場合のことも別に考える必要があるがこれは後で。

三項演算子の外にもう一つ制限を加えるか。

 

人気の記事

1

皆さん、ついに、エアラインでも、サブスクリプションが始まったのはご存じですか? まだ実験段階ですが、ANAが、定額全国住み放題サービスを提供する「ADDress」と組んで、国内線を4回まで定額利用可能 ...

2

無料でネットショップを開けるアプリとして多くの人に驚きを与えたBASE株式会社が、2019年10月25日東証マザーズに上場しました。2020年2月時点で90万店を超えるショップを抱えるまでに成長してい ...

3

2011年にサービスを開始してから圧倒的な成長率を誇るインテリア通販サイト 【FLYMEe/フライミー】を皆さんご存じでしょうか。 「自分のイメージするインテリア、本当に欲しいインテリアがどこにあるの ...

4

ついに、noteの月間アクティブユーザー数が4400万人(2020年3月時点)に到達しました。 そもそも、「note」とは、クリエイターが、文章やマンガ、写真、音声を投稿することができ、ユーザーはその ...

5

ボードゲームカフェが1日2回転で儲かるという記事をみつけたので興味を持ち、調べてみました。 まずは、需要がどれくらいあるのか、市場のようすからみていきましょう。 世界最大のボードゲーム市場はドイツで、 ...

-Blockchain, code, Metaverse, VR
-, ,

Copyright© BUSINESS HUNTER , 2023 All Rights Reserved Powered by AFFINGER5.