<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>채팅하기</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous">
<link href="css/chat.css" rel="stylesheet">
<link href="css/basic.css" rel="stylesheet">
</head>
<body>
<script src="https://www.gstatic.com/firebasejs/8.6.5/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.6.5/firebase-auth.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.6.5/firebase-firestore.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.6.5/firebase-storage.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"
integrity="sha384-kenU1KFdBIe4zVF0s0G1M5b4hcpxyD9F7jL+jjXkk+Q2h455rYXK/7HAuoJl+0I4"
crossorigin="anonymous"></script>
<script src="https://code.jquery.com/jquery-3.6.2.min.js"
integrity="sha256-2krYZKh//PcchRtd+H+VyyQoZ/e3EcrkxhM8ycwASPA=" crossorigin="anonymous"></script>
<script>
var firebaseConfig = {
apiKey: "AIzaSyC0yKgR3yvA5YMKwCOk_SIQbfDIpyKh20w",
authDomain: "stockbgm-c32fb.firebaseapp.com",
projectId: "stockbgm-c32fb",
storageBucket: "stockbgm-c32fb.appspot.com",
messagingSenderId: "406644331721",
appId: "1:406644331721:web:fac7736eebed51e9fca918",
measurementId: "G-4SPZTKP7YY"
};
// Initialize Firebase
firebase.initializeApp(firebaseConfig);
</script>
<nav class="navbar navbar-expand-lg bg-light">
<div class="container-fluid">
< img src="images/logo.png">
<div id="nav-name">
<span class="ms-auto mx-2" id="userName"></span>
</div>
<div id="nav-login">
<span class="ms-auto mx-2" id="userName">로그인</span>
</div>
<div id="nav-logout">
<span class="ms-auto mx-2" id="userName"><a class="navbar-brand" type="submit" class="btn btn-primary"
id="logout">로그아웃</span>
</div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse"
data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<div id="nav-mypage">
<li class="nav-item">
마이페이지
</div>
<li class="nav-item">
About
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown"
aria-expanded="false">
마켓
<ul class="dropdown-menu">
마켓
Bgm 마켓
구매 의뢰 목록
<hr class="dropdown-divider">
구매 의뢰하기
판매하기
<li class="nav-item">
(예정)
</div>
</div>
</nav>
<div class="container p-4 detail">
<div class="row">
<div class="chat-room">
<ul class="list-group chat-content">
<!--
<span class="chat-box">채팅방1 content0</span>
<span class="chat-box">채팅방1 content0</span>
<span class="chat-box mine">채팅방1 content0</span> -->
<div class="input-group">
<input class="form-control" id="chat-input" value="채팅을 입력하세요."
onfocus="if(this.value=='채팅을 입력하세요.'){this.value=''}"
onblur="if(this.value==''){this.value='채팅을 입력하세요.'}" />
<button class="btn btn-secondary" id="send">전송</button>
</div>
</div>
</div>
</div>
<script>
const db = firebase.firestore();
const storage = firebase.storage();
//비회원 접속 차단 코드
if (localStorage.getItem('user') != null) {
}
else {
alert('로그인 후 서비스를 이용하실 수 있습니다.')
window.location.href = "login.html"
}
var 내uid = JSON.parse(localStorage.getItem('user')).uid;
var 쿼리스트링 = new URLSearchParams(window.location.search);
var 채팅방id = $(this).children('.text-small').text();
//메시지 전송 코드
$('#send').click(function () {
var 데이터 = {
content: $('#chat-input').val(),
date: new Date(),
uid: 내uid,
}
db.collection('chatroom').doc(채팅방id).collection('messages').add(데이터)
input.value = null;
})
db.collection('chatroom').where('who', 'array-contains', 내uid).get().then((result) => {
result.forEach((a) => {
console.log(a.data())
db.collection('chatroom').doc(채팅방id).collection('messages').orderBy('date').onSnapshot((result) => {
$('.chat-content').html('');
result.forEach((a) => {
messageUid = a.data().uid;
if (내uid == messageUid) {
var 템플릿 = `
<li><span class="chat-box mine">${a.data().content}</span></li>
`;
$('.chat-content').append(템플릿)
} else {
var 템플릿 = `
<li><span class="chat-box">${a.data().content}</span></li>
`;
$('.chat-content').append(템플릿)
}
})
//채팅 스크롤 다운 코드
$('.chat-content').scrollTop($('.chat-content').prop('scrollHeight'));
})
})
})
// // 유저정보 확인
// if (localStorage.getItem('user') != null) {
// var 뺀거 = localStorage.getItem('user')
// $('#userName').html(JSON.parse(뺀거).displayName)
// }
// firebase.auth().onAuthStateChanged((user) => {
// if (user) {
// console.log(user.uid)
// console.log(user.displayName)
// localStorage.setItem('user', JSON.stringify(user))
// }
// })
//회원/비회원 nav바 show/hide 및 유저정보 확인 코드
$(function () {
if (localStorage.getItem('user') != null) {
var 뺀거 = localStorage.getItem('user')
$('#userName').html(JSON.parse(뺀거).displayName)
document.getElementById("nav-login").style.display = "none";
document.getElementById("nav-logout").style.display = "";
document.getElementById("nav-name").style.display = "";
document.getElementById("nav-mypage").style.display = "";
} else {
document.getElementById("nav-login").style.display = "";
document.getElementById("nav-logout").style.display = "none";
document.getElementById("nav-name").style.display = "none";
document.getElementById("nav-mypage").style.display = "none";
}
})
firebase.auth().onAuthStateChanged((user) => {
if (user) {
console.log(user.uid)
console.log(user.displayName)
localStorage.setItem('user', JSON.stringify(user))
}
})
//로그아웃 코드
$('#logout').click(function () {
firebase.auth().signOut()
localStorage.removeItem('user')
setTimeout(() => window.location.href = "index.html", 3500);
alert('로그아웃을 완료했습니다.');
})
//채팅 입력창 엔터키로 메세지 전송하기 코드
var input = document.getElementById("chat-input");
input.addEventListener("keypress", function (event) {
if (event.keyCode === 13) {
event.preventDefault();
document.getElementById("send").click();
}
});
</script>
</body>
</html>
위의 코드에서, 채팅방id는 어떻게 변수 선언해야되나요?? 도움이 꼭 필요합니다...