Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
2
240
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
2022-240
240
Commits
21820ebf
Commit
21820ebf
authored
Aug 18, 2022
by
Malsha Rathnasiri
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
WIP chat
parent
cf4c555d
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
102 additions
and
17 deletions
+102
-17
MobileApp/api/constants.js
MobileApp/api/constants.js
+2
-1
MobileApp/screens/TabOneScreen.jsx
MobileApp/screens/TabOneScreen.jsx
+28
-13
backend/backend/asgi.py
backend/backend/asgi.py
+13
-2
backend/backend/cms/migrations/0003_chat_is_detected.py
backend/backend/cms/migrations/0003_chat_is_detected.py
+18
-0
backend/backend/cms/models.py
backend/backend/cms/models.py
+1
-0
backend/backend/consumers.py
backend/backend/consumers.py
+30
-0
backend/backend/routing.py
backend/backend/routing.py
+6
-0
backend/backend/settings.py
backend/backend/settings.py
+4
-1
backend/db.sqlite3
backend/db.sqlite3
+0
-0
No files found.
MobileApp/api/constants.js
View file @
21820ebf
// export const BACKEND_URL = "http://192.168.8.103:8000"
// export const BACKEND_URL = "http://192.168.8.103:8000"
export
const
BACKEND_URL
=
"
https://675d-123-231-127-199.in.ngrok.io
"
export
const
BACKEND_ADDRESS
=
"
0be4-123-231-126-225.in.ngrok.io
"
\ No newline at end of file
export
const
BACKEND_URL
=
`https:/
${
BACKEND_ADDRESS
}
`
\ No newline at end of file
MobileApp/screens/TabOneScreen.jsx
View file @
21820ebf
...
@@ -7,37 +7,44 @@ import EditScreenInfo from '../components/EditScreenInfo';
...
@@ -7,37 +7,44 @@ import EditScreenInfo from '../components/EditScreenInfo';
import
{
Text
,
View
}
from
'
../components/Themed
'
;
import
{
Text
,
View
}
from
'
../components/Themed
'
;
import
{
RootTabScreenProps
}
from
'
../types
'
;
import
{
RootTabScreenProps
}
from
'
../types
'
;
import
{
create
,
getList
}
from
'
../api/api
'
;
import
{
create
,
getList
}
from
'
../api/api
'
;
import
{
BACKEND_ADDRESS
}
from
'
../api/constants
'
;
import
Ionicons
from
'
@expo/vector-icons/Ionicons
'
;
export
default
function
ChatScreen
({
navigation
})
{
export
default
function
ChatScreen
({
navigation
})
{
const
currentTime
=
new
Date
()
const
currentTime
=
new
Date
()
const
defaultChatData
=
[{
from
:
'
esh
'
,
to
:
"
dri
"
,
message
:
'
msg1
'
,
time
:
currentTime
.
setMinutes
(
currentTime
.
getMinutes
()
-
1
)
},
const
defaultChatData
=
[{
from
_user
:
1
,
to_user
:
2
,
message
:
'
msg1
'
,
timestamp
:
currentTime
.
setMinutes
(
currentTime
.
getMinutes
()
-
1
)
},
{
from
:
'
esh
'
,
to
:
"
dri
"
,
message
:
'
msg2
'
,
time
:
currentTime
.
setMinutes
(
currentTime
.
getMinutes
()
-
2
)
},
{
from
_user
:
1
,
to_user
:
2
,
message
:
'
msg2
'
,
timestamp
:
currentTime
.
setMinutes
(
currentTime
.
getMinutes
()
-
2
)
},
{
from
:
'
dri
'
,
to
:
"
esh
"
,
message
:
'
msg3
'
,
time
:
currentTime
.
setMinutes
(
currentTime
.
getMinutes
()
-
3
)
},
{
from
_user
:
2
,
to_user
:
1
,
message
:
'
msg3
'
,
timestamp
:
currentTime
.
setMinutes
(
currentTime
.
getMinutes
()
-
3
),
is_detected
:
false
},
{
from
:
'
esh
'
,
to
:
"
dri
"
,
message
:
'
msg4
'
,
time
:
currentTime
.
setMinutes
(
currentTime
.
getMinutes
()
-
4
)
},
{
from
_user
:
1
,
to_user
:
2
,
message
:
'
left
'
,
timestamp
:
currentTime
.
setMinutes
(
currentTime
.
getMinutes
()
-
4
),
is_detected
:
true
},
{
from
:
'
dri
'
,
to
:
"
esh
"
,
message
:
'
msg5
'
,
time
:
currentTime
.
setMinutes
(
currentTime
.
getMinutes
()
-
5
)
},
{
from
_user
:
2
,
to_user
:
1
,
message
:
'
msg5
'
,
timestamp
:
currentTime
.
setMinutes
(
currentTime
.
getMinutes
()
-
5
)
},
{
from
:
'
esh
'
,
to
:
"
dri
"
,
message
:
'
msg1
'
,
time
:
currentTime
.
setDate
(
currentTime
.
getDate
()
-
1
)
},
{
from
_user
:
1
,
to_user
:
2
,
message
:
'
msg1
'
,
timestamp
:
currentTime
.
setDate
(
currentTime
.
getDate
()
-
1
)
},
{
from
:
'
esh
'
,
to
:
"
dri
"
,
message
:
'
msg2
'
,
time
:
currentTime
.
setDate
(
currentTime
.
getDate
()
-
2
)
},
{
from
_user
:
1
,
to_user
:
2
,
message
:
'
msg2
'
,
timestamp
:
currentTime
.
setDate
(
currentTime
.
getDate
()
-
2
)
},
{
from
:
'
dri
'
,
to
:
"
esh
"
,
message
:
'
msg3
'
,
time
:
currentTime
.
setDate
(
currentTime
.
getDate
()
-
3
)
},
{
from
_user
:
2
,
to_user
:
1
,
message
:
'
msg3
'
,
timestamp
:
currentTime
.
setDate
(
currentTime
.
getDate
()
-
3
)
},
{
from
:
'
esh
'
,
to
:
"
dri
"
,
message
:
'
msg4
'
,
time
:
currentTime
.
setDate
(
currentTime
.
getDate
()
-
4
)
},
{
from
_user
:
1
,
to_user
:
2
,
message
:
'
msg4
'
,
timestamp
:
currentTime
.
setDate
(
currentTime
.
getDate
()
-
4
)
},
{
from
:
'
dri
'
,
to
:
"
esh
"
,
message
:
'
msg5
'
,
time
:
currentTime
.
setDate
(
currentTime
.
getDate
()
-
5
)
},
{
from
_user
:
2
,
to_user
:
1
,
message
:
'
msg5
'
,
timestamp
:
currentTime
.
setDate
(
currentTime
.
getDate
()
-
5
)
},
]
]
const
[
detectedText
,
setDetectedText
]
=
useState
(
""
)
const
[
detectedText
,
setDetectedText
]
=
useState
(
""
)
const
[
chatDetails
,
setChatDetails
]
=
useState
({
from_user
:
1
,
to_user
:
2
,
conversation_id
:
1
})
const
[
chatDetails
,
setChatDetails
]
=
useState
({
from_user
:
1
,
to_user
:
2
,
conversation_id
:
1
})
const
[
chats
,
setChats
]
=
useState
([])
const
[
chats
,
setChats
]
=
useState
([])
const
[
input
,
setInput
]
=
useState
(
'
test
'
)
const
[
input
,
setInput
]
=
useState
(
'
test
'
)
const
[
loading
,
setLoading
]
=
useState
(
true
)
const
[
loading
,
setLoading
]
=
useState
(
true
)
const
ws
=
new
WebSocket
(
'
ws://localhost:3000/ws
'
)
const
ws
=
new
WebSocket
(
`ws://
${
BACKEND_ADDRESS
}
/chatSocket/`
)
useEffect
(()
=>
{
useEffect
(()
=>
{
loadChats
()
//
loadChats()
// startWebsocket()
// startWebsocket()
loadSampleChats
()
setLoading
(
false
)
},
[])
},
[])
const
startWebsocket
=
()
=>
{
const
startWebsocket
=
()
=>
{
...
@@ -61,6 +68,14 @@ export default function ChatScreen({ navigation }) {
...
@@ -61,6 +68,14 @@ export default function ChatScreen({ navigation }) {
}
}
const
loadSampleChats
=
()
=>
{
const
chats_
=
defaultChatData
//res.results
const
sections
=
[...
new
Set
(
chats_
.
map
(
chat
=>
new
Date
(
chat
.
timestamp
).
setHours
(
0
,
0
,
0
,
0
)))];
const
sectionChats
=
sections
.
map
(
section
=>
({
title
:
section
,
data
:
chats
.
filter
(
chat
=>
new
Date
(
chat
.
timestamp
).
setHours
(
0
,
0
,
0
,
0
)
==
section
)
}))
setChats
(
sectionChats
)
console
.
log
({
chats
})
}
const
loadChats
=
async
()
=>
{
const
loadChats
=
async
()
=>
{
await
getList
(
'
chats
'
).
then
(
res
=>
{
await
getList
(
'
chats
'
).
then
(
res
=>
{
return
res
.
json
()
return
res
.
json
()
...
...
backend/backend/asgi.py
View file @
21820ebf
...
@@ -11,6 +11,17 @@ import os
...
@@ -11,6 +11,17 @@ import os
from
django.core.asgi
import
get_asgi_application
from
django.core.asgi
import
get_asgi_application
os
.
environ
.
setdefault
(
'DJANGO_SETTINGS_MODULE'
,
'backend.settings'
)
#
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'backend.settings')
application
=
get_asgi_application
()
# application = get_asgi_application()
from
channels.routing
import
ProtocolTypeRouter
,
URLRouter
# noqa isort:skip
from
.routing
import
websocket_urlpatterns
# noqa isort:skip
application
=
ProtocolTypeRouter
(
{
"http"
:
get_asgi_application
(),
"websocket"
:
URLRouter
(
websocket_urlpatterns
),
}
)
backend/backend/cms/migrations/0003_chat_is_detected.py
0 → 100644
View file @
21820ebf
# Generated by Django 4.1 on 2022-08-18 03:33
from
django.db
import
migrations
,
models
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'cms'
,
'0002_conversation_chat'
),
]
operations
=
[
migrations
.
AddField
(
model_name
=
'chat'
,
name
=
'is_detected'
,
field
=
models
.
BooleanField
(
default
=
False
),
),
]
backend/backend/cms/models.py
View file @
21820ebf
...
@@ -32,3 +32,4 @@ class Chat(models.Model):
...
@@ -32,3 +32,4 @@ class Chat(models.Model):
User
,
related_name
=
'to_convo'
,
on_delete
=
models
.
PROTECT
)
User
,
related_name
=
'to_convo'
,
on_delete
=
models
.
PROTECT
)
message
=
models
.
TextField
()
message
=
models
.
TextField
()
timestamp
=
models
.
DateTimeField
(
auto_now
=
True
)
timestamp
=
models
.
DateTimeField
(
auto_now
=
True
)
is_detected
=
models
.
BooleanField
(
default
=
False
)
backend/backend/consumers.py
0 → 100644
View file @
21820ebf
from
channels.generic.websocket
import
JsonWebsocketConsumer
class
ChatConsumer
(
JsonWebsocketConsumer
):
"""
This consumer is used to show user's online status,
and send notifications.
"""
def
__init__
(
self
,
*
args
,
**
kwargs
):
super
()
.
__init__
(
args
,
kwargs
)
self
.
room_name
=
None
def
connect
(
self
):
print
(
"Connected!"
)
self
.
room_name
=
"home"
self
.
accept
()
self
.
send_json
(
{
"type"
:
"welcome_message"
,
"message"
:
"Hey there! You've successfully connected!"
,
}
)
def
disconnect
(
self
,
code
):
print
(
"Disconnected!"
)
return
super
()
.
disconnect
(
code
)
def
receive_json
(
self
,
content
,
**
kwargs
):
print
(
content
)
return
super
()
.
receive_json
(
content
,
**
kwargs
)
\ No newline at end of file
backend/backend/routing.py
0 → 100644
View file @
21820ebf
from
django.urls
import
path
from
backend.consumers
import
ChatConsumer
websocket_urlpatterns
=
[
path
(
"/chatSocket"
,
ChatConsumer
.
as_asgi
())
]
\ No newline at end of file
backend/backend/settings.py
View file @
21820ebf
...
@@ -42,6 +42,7 @@ INSTALLED_APPS = [
...
@@ -42,6 +42,7 @@ INSTALLED_APPS = [
'rest_framework'
,
'rest_framework'
,
'backend.cms'
,
'backend.cms'
,
'corsheaders'
,
'corsheaders'
,
'channels'
]
]
MIDDLEWARE
=
[
MIDDLEWARE
=
[
...
@@ -159,4 +160,6 @@ SIMPLE_JWT = {
...
@@ -159,4 +160,6 @@ SIMPLE_JWT = {
'SLIDING_TOKEN_REFRESH_LIFETIME'
:
datetime
.
timedelta
(
days
=
1
),
'SLIDING_TOKEN_REFRESH_LIFETIME'
:
datetime
.
timedelta
(
days
=
1
),
}
}
CORS_ORIGIN_ALLOW_ALL
=
True
CORS_ORIGIN_ALLOW_ALL
=
True
\ No newline at end of file
ASGI_APPLICATION
=
"backend.asgi.application"
\ No newline at end of file
backend/db.sqlite3
View file @
21820ebf
No preview for this file type
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment