const checkChannelOwner = async (channel_id: number): Promise<String | null> => {
const { data, error } = await supabase
.from('chat_channels')
.select('owner_id')
.eq('channel_id', channel_id)
.single()
if (error) {
console.log(error);
return null;
}
else {
console.log(data.owner_id);
return data.owner_id;
}
}
채널 정보를 통해 채널의 소유주가 누구인지 반환해준다
const receiveChatMessage = async (channel_id: number) => {
const user_id = await userdata.id
const approve = await userdata.approve
const owner_id = await checkChannelOwner(channel_id);
if (approve && owner_id == user_id) {
console.log('인플루언서 본인의 채팅방입니다.')
const channelInflu = supabase
.channel('changes')
.on(
'postgres_changes',
{
event: 'INSERT',
schema: 'public',
table: 'chat_messages',
filter: `channel_id=eq.${channel_id}`,
},
(payload) => console.log(payload)
)
.subscribe()
} else {
console.log('팬 채팅방입니다.')
const channelFan = supabase
.channel('changes')
.on(
'postgres_changes',
{
event: 'INSERT',
schema: 'public',
table: 'chat_messages',
filter: `channel_id=eq.${channel_id}`,
},
(payload) => console.log(payload)
)
.subscribe()
}
}
본인의 채팅방인지 확인해주고 실시간으로 받는 메세지를 구분해준다.
문제점 : 다중 열 필터 기능이 아직 개발되지 않은 문제로 실시간 값을 받은 후 이차 필터링을 해줄 것
추후 보완수정 작업을 거칠 예정이다.