diff --git a/index.html b/index.html
index 258288b..a1af88b 100644
--- a/index.html
+++ b/index.html
@@ -1,11 +1,16 @@
-
-
-
-
-
+
+
+ Open Chess
+
+
+
+
+
+
+
-
-
- Vite App
+
diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png
new file mode 100644
index 0000000..002fc2d
Binary files /dev/null and b/public/apple-touch-icon.png differ
diff --git a/public/browserconfig.xml b/public/browserconfig.xml
new file mode 100644
index 0000000..b3930d0
--- /dev/null
+++ b/public/browserconfig.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+ #da532c
+
+
+
diff --git a/public/favicon-16x16.png b/public/favicon-16x16.png
new file mode 100644
index 0000000..9b1aa73
Binary files /dev/null and b/public/favicon-16x16.png differ
diff --git a/public/favicon-32x32.png b/public/favicon-32x32.png
new file mode 100644
index 0000000..e177c36
Binary files /dev/null and b/public/favicon-32x32.png differ
diff --git a/public/favicon.ico b/public/favicon.ico
new file mode 100644
index 0000000..9aef431
Binary files /dev/null and b/public/favicon.ico differ
diff --git a/public/mstile-150x150.png b/public/mstile-150x150.png
new file mode 100644
index 0000000..b6793dc
Binary files /dev/null and b/public/mstile-150x150.png differ
diff --git a/public/pwa-192x192.png b/public/pwa-192x192.png
index cd3ee45..a5e3952 100644
Binary files a/public/pwa-192x192.png and b/public/pwa-192x192.png differ
diff --git a/public/pwa-512x512.png b/public/pwa-512x512.png
index 200cb73..c1ae31d 100644
Binary files a/public/pwa-512x512.png and b/public/pwa-512x512.png differ
diff --git a/public/robots.txt b/public/robots.txt
new file mode 100644
index 0000000..14267e9
--- /dev/null
+++ b/public/robots.txt
@@ -0,0 +1,2 @@
+User-agent: *
+Allow: /
\ No newline at end of file
diff --git a/public/safari-pinned-tab.svg b/public/safari-pinned-tab.svg
new file mode 100644
index 0000000..b0d0491
--- /dev/null
+++ b/public/safari-pinned-tab.svg
@@ -0,0 +1,122 @@
+
+
+
diff --git a/public/site.webmanifest b/public/site.webmanifest
new file mode 100644
index 0000000..7983c08
--- /dev/null
+++ b/public/site.webmanifest
@@ -0,0 +1,19 @@
+{
+ "name": "",
+ "short_name": "",
+ "icons": [
+ {
+ "src": "/pwa-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "/pwa-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png"
+ }
+ ],
+ "theme_color": "#ffffff",
+ "background_color": "#ffffff",
+ "display": "standalone"
+}
diff --git a/src/components/InvitePlayers.vue b/src/components/InvitePlayers.vue
index 000727f..0947a21 100644
--- a/src/components/InvitePlayers.vue
+++ b/src/components/InvitePlayers.vue
@@ -67,6 +67,8 @@ import {
getFriends,
getFriendRequest,
createGameWithCurrent,
+ checkFriendRequest,
+ FriendRequestStatus,
} from "../util/parse"
export default {
@@ -86,6 +88,7 @@ export default {
},
async mounted() {
await this.updateFriends()
+ await checkFriendRequest()
},
methods: {
async addFriendClickHander(ev) {
@@ -116,9 +119,8 @@ export default {
const newFriends = await getFriends()
if (newFriends && newFriends.length > 0) this.friends = newFriends
- const friends_requests = await getFriendRequest(user)
- // request Friends
- const friendRequestIds = friends_requests.map(request => request.objectId)
+ const friends_requests = await getFriendRequest(user, FriendRequestStatus.pending)
+ // set friendsequests
if (friends_requests) this.friendRequests = friends_requests
}
},
diff --git a/src/main.ts b/src/main.ts
index e439382..9e0a233 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -151,8 +151,6 @@ const store = createStore({
})
const app = createApp(App)
-console.log(process.env.NODE_ENV)
-
if (process.env.NODE_ENV === "production") {
Sentry.init({
app,
diff --git a/src/registerSW.js b/src/registerSW.js
new file mode 100644
index 0000000..d42ac9e
--- /dev/null
+++ b/src/registerSW.js
@@ -0,0 +1 @@
+if('serviceWorker' in navigator) {window.addEventListener('load', () => {navigator.serviceWorker.register('/sw.js', { scope: '/' })})}
\ No newline at end of file
diff --git a/src/util/parse.ts b/src/util/parse.ts
index dfa30de..1e20759 100644
--- a/src/util/parse.ts
+++ b/src/util/parse.ts
@@ -29,7 +29,6 @@ export interface SingeUpUserData {
}
// Parse interfaces
-
export interface ParseObject {
id: string
get?: (varName: string) => any | any[]
@@ -37,6 +36,7 @@ export interface ParseObject {
add?: (varName: string, varValue: any) => void
relation?: (relationName: string) => any
save?: () => Promise
+ destroy?: () => Promise
new (): any
[index: string]: string | number | undefined | ((index?: string, index2?: any) => any)
}
@@ -51,7 +51,9 @@ export interface ParseGame extends ParseObject {
getUserColor?: (id: string) => ChessColor
}
-export interface ParseFriendRequest extends ParseObject {}
+export interface ParseFriendRequest extends ParseObject {
+ getFriend: () => false | ParseUser
+}
/**
* Initalises the Parse connection and adds default Object
@@ -102,7 +104,7 @@ function createParseGameObject() {
function createParseFriendRequestObject(): ParseFriendRequest {
return Parse.Object.extend("FriendRequests", {
- getFriend(): false | any {
+ getFriend(): false | ParseUser {
const current = getCurrentUser()
const from = this.get("fromUser")
const to = this.get("toUser")
@@ -380,13 +382,11 @@ export async function answerFriendRequest(
"status",
acceptRequest ? FriendRequestStatus.accepted : FriendRequestStatus.rejected
)
- // update user
- const userFriends = currentUser.relation("friends")
- userFriends.add(friend)
try {
await friendRequest.save()
- await currentUser.save()
+ // update user
+ await addFriend(friend)
return true
} catch (error) {
@@ -406,21 +406,19 @@ export async function answerFriendRequest(
*/
export async function getFriendRequest(
toUser: ParseUser,
- fromUser?: ParseUser
-): Promise {
+ filter?: FriendRequestStatus
+): Promise {
const friendRequest = createParseFriendRequestObject()
const requestObject = new friendRequest()
// query
const toQuery = new Parse.Query(requestObject)
toQuery.equalTo("toUser", toUser)
- toQuery.equalTo("status", FriendRequestStatus.pending)
- if (!_.isUndefined(fromUser)) toQuery.equalTo("fromUser", fromUser)
+ if (!_.isUndefined(filter)) toQuery.equalTo("status", filter)
const fromQuery = new Parse.Query(requestObject)
fromQuery.equalTo("fromUser", toUser)
- fromQuery.equalTo("status", FriendRequestStatus.pending)
- if (!_.isUndefined(fromUser)) toQuery.equalTo("toUser", fromUser)
+ if (!_.isUndefined(filter)) fromQuery.equalTo("status", filter)
const query = Parse.Query.or(toQuery, fromQuery)
query.include(["toUser", "fromUser"])
@@ -450,39 +448,69 @@ export async function getFriends(): Promise {
return false
}
-export async function currentFriendRequests(): Promise {
- const current = getCurrentUser()
- const query = new Parse.Query(Parse.User)
- const friendQuery = new Parse.Query(Parse.User)
+export async function addFriend(friend: ParseUser): Promise {
+ const currentUser = getCurrentUser()
- if (current) {
- const currentFriends = await getFriends()
+ if (currentUser) {
+ const friendRel = currentUser.relation("friends")
+ friendRel.add(friend)
- if (currentFriends) {
- // applie filter to Querys
- friendQuery.equalTo("objectId", current.id)
- query.matchesQuery("friends", friendQuery)
- try {
- let friendRequests = await query.find()
- // const friendIds = friendRequests.
- const removedFriends = _.remove(friendRequests, value => {
- const currUserId = value.id
- var returnValue = false
-
- currentFriends.map(friend => {
- if (friend.id === currUserId) returnValue = true
- return false
- })
-
- return returnValue
+ try {
+ await currentUser.save()
+ return true
+ } catch (error) {
+ console.error(error)
+ return false
+ }
+ }
+ return false
+}
+
+export async function destroyFriendRequest(request: ParseFriendRequest): Promise {
+ try {
+ await request.destroy()
+ return true
+ } catch (error) {
+ console.error(error)
+ return false
+ }
+}
+
+export async function checkFriendRequest(): Promise {
+ const currentUser = getCurrentUser()
+ const friends = await getFriends()
+
+ if (currentUser && friends) {
+ const friendRequests = await getFriendRequest(currentUser)
+ const newFriendRequest = friendRequests.filter(request => {
+ const requestFriend = request.getFriend()
+ let add = true
+
+ if (requestFriend) {
+ let id = requestFriend.id
+ friends.map(friend => {
+ if (friend.id === id) add = false
})
+ }
- return friendRequests
- } catch (error) {
- console.error("error: ", error)
- return false
+ return add
+ })
+
+ // checking all friendrequest for accepts or rejects
+ newFriendRequest.map(async friendRequest => {
+ const status = friendRequest.get("status")
+ const friend = friendRequest.getFriend()
+
+ if (friend) {
+ if (status === FriendRequestStatus.accepted) {
+ await addFriend(friend)
+ await destroyFriendRequest(friendRequest)
+ } else if (status === FriendRequestStatus.rejected)
+ await destroyFriendRequest(friendRequest)
}
- }
+ })
+
+ return true
}
return false
}
diff --git a/vite.config.ts b/vite.config.ts
index c10aaca..a9eddf7 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -4,6 +4,12 @@ import { VitePWA } from "vite-plugin-pwa"
import replace from "@rollup/plugin-replace"
import fs from "fs"
+/**
+ mode: "development",
+ base: "/",
+ registerType: process.env.CLAIMS === "true" ? "autoUpdate" : undefined,
+*/
+
const config: UserConfig = {
// base: process.env.BASE_URL || 'https://github.com/',
build: {
@@ -12,13 +18,11 @@ const config: UserConfig = {
plugins: [
Vue(),
VitePWA({
- mode: "development",
- base: "/",
- registerType: process.env.CLAIMS === "true" ? "autoUpdate" : undefined,
- includeAssets: ["favicon.svg"], // <== don't add slash, for testing
+ includeAssets: ["favicon.svg", "favicon.ico", "robots.txt", "apple-touch-icon.png"], // <== don't add slash, for testing
manifest: {
name: "Open-Chess",
short_name: "Open-Chess",
+ description: "Open Source Chess app",
theme_color: "#ffffff",
icons: [
{