diff --git a/backend/src/schema/types/type/Location.gql b/backend/src/schema/types/type/Location.gql
index fad24cc26..9cb5c970a 100644
--- a/backend/src/schema/types/type/Location.gql
+++ b/backend/src/schema/types/type/Location.gql
@@ -25,4 +25,3 @@ type LocationMapBox {
type Query {
queryLocations(place: String!, lang: String!): [LocationMapBox]!
}
-
diff --git a/backend/src/schema/types/type/Post.gql b/backend/src/schema/types/type/Post.gql
index 0a7277515..7e6d1d0e7 100644
--- a/backend/src/schema/types/type/Post.gql
+++ b/backend/src/schema/types/type/Post.gql
@@ -84,8 +84,8 @@ input _PostFilter {
group: _GroupFilter
postsInMyGroups: Boolean
postType_in: [PostType]
- eventStart_gte: String
- eventEnd_gte: String
+ eventStart_gte: String
+ eventEnd_gte: String
}
enum _PostOrdering {
diff --git a/cypress/support/commands.js b/cypress/support/commands.js
index 16fa6dc01..92e8bf1f7 100644
--- a/cypress/support/commands.js
+++ b/cypress/support/commands.js
@@ -13,7 +13,6 @@
// Cypress.Commands.add('login', (email, password) => { ... })
/* globals Cypress cy */
-import "cypress-file-upload";
import { GraphQLClient, request } from 'graphql-request'
import CONFIG from '../../backend/build/src/config'
diff --git a/cypress/support/step_definitions/Post.Images/I_should_be_able_to_{string}_a_teaser_image.js b/cypress/support/step_definitions/Post.Images/I_should_be_able_to_{string}_a_teaser_image.js
index 019cc956a..478851f92 100644
--- a/cypress/support/step_definitions/Post.Images/I_should_be_able_to_{string}_a_teaser_image.js
+++ b/cypress/support/step_definitions/Post.Images/I_should_be_able_to_{string}_a_teaser_image.js
@@ -1,28 +1,27 @@
import { Then } from "@badeball/cypress-cucumber-preprocessor";
Then("I should be able to {string} a teaser image", condition => {
- // cy.reload()
+ let postTeaserImage = ""
+
switch(condition){
- case 'change':
- cy.get('.delete-image-button')
+ case "change":
+ postTeaserImage = "humanconnection.png"
+ cy.get(".delete-image-button")
.click()
- cy.fixture('humanconnection.png').as('postTeaserImage').then(function() {
- cy.get("#postdropzone").upload(
- { fileContent: this.postTeaserImage, fileName: 'humanconnection.png', mimeType: "image/png" },
- { subjectType: "drag-n-drop", force: true }
- ).wait(750);
- })
+ cy.get("#postdropzone").selectFile(
+ { contents: `cypress/fixtures/${postTeaserImage}`, fileName: postTeaserImage, mimeType: "image/png" },
+ { action: "drag-drop", force: true }
+ ).wait(750);
break;
- case 'add':
- cy.fixture('onourjourney.png').as('postTeaserImage').then(function() {
- cy.get("#postdropzone").upload(
- { fileContent: this.postTeaserImage, fileName: 'onourjourney.png', mimeType: "image/png" },
- { subjectType: "drag-n-drop", force: true }
- ).wait(750);
- })
+ case "add":
+ postTeaserImage = "onourjourney.png"
+ cy.get("#postdropzone").selectFile(
+ { contents: `cypress/fixtures/${postTeaserImage}`, fileName: postTeaserImage, mimeType: "image/png" },
+ { action: "drag-drop", force: true }
+ ).wait(750);
break;
- case 'remove':
- cy.get('.delete-image-button')
+ case "remove":
+ cy.get(".delete-image-button")
.click()
break;
}
diff --git a/cypress/support/step_definitions/UserProfile.Avatar/I_should_be_able_to_change_my_profile_picture.js b/cypress/support/step_definitions/UserProfile.Avatar/I_should_be_able_to_change_my_profile_picture.js
index 27be5a99d..b1b2401e2 100644
--- a/cypress/support/step_definitions/UserProfile.Avatar/I_should_be_able_to_change_my_profile_picture.js
+++ b/cypress/support/step_definitions/UserProfile.Avatar/I_should_be_able_to_change_my_profile_picture.js
@@ -2,13 +2,11 @@ import { Then } from "@badeball/cypress-cucumber-preprocessor";
Then("I should be able to change my profile picture", () => {
const avatarUpload = "onourjourney.png";
-
- cy.fixture(avatarUpload, "base64").then(fileContent => {
- cy.get("#customdropzone").upload(
- { fileContent, fileName: avatarUpload, mimeType: "image/png" },
- { subjectType: "drag-n-drop", force: true }
- );
- });
+
+ cy.get("#customdropzone").selectFile(
+ { contents: `cypress/fixtures/${avatarUpload}`, fileName: avatarUpload, mimeType: "image/png" },
+ { action: "drag-drop" }
+ );
cy.get(".profile-page-avatar img")
.should("have.attr", "src")
.and("contains", "onourjourney");
diff --git a/deployment/configurations/stage.ocelot.social b/deployment/configurations/stage.ocelot.social
index 350237c62..fdc2e52fa 160000
--- a/deployment/configurations/stage.ocelot.social
+++ b/deployment/configurations/stage.ocelot.social
@@ -1 +1 @@
-Subproject commit 350237c62dcff1a5c34f1e8d718f89b05ce3d33f
+Subproject commit fdc2e52fa444b300e1c4736600bc0e9ae3314222
diff --git a/package.json b/package.json
index 51c833149..afe65426a 100644
--- a/package.json
+++ b/package.json
@@ -27,8 +27,8 @@
"scripts": {
"db:seed": "cd backend && yarn run db:seed",
"db:reset": "cd backend && yarn run db:reset",
- "cypress:run": "cypress run --browser electron --config-file ./cypress/cypress.config.js",
- "cypress:open": "cypress open --browser electron --config-file ./cypress/cypress.config.js",
+ "cypress:run": "cypress run --e2e --browser electron --config-file ./cypress/cypress.config.js",
+ "cypress:open": "cypress open --e2e --browser electron --config-file ./cypress/cypress.config.js",
"cucumber:setup": "cd backend && yarn run dev",
"cucumber": "wait-on tcp:4000 && cucumber-js --require-module @babel/register --exit",
"release": "yarn version --no-git-tag-version --no-commit-hooks --no-commit && auto-changelog --latest-version $(node -p -e \"require('./package.json').version\") && cd backend && yarn version --no-git-tag-version --no-commit-hooks --no-commit --new-version $(node -p -e \"require('./../package.json').version\") && cd ../webapp && yarn version --no-git-tag-version --no-commit-hooks --no-commit --new-version $(node -p -e \"require('./../package.json').version\") && cd ../webapp/maintenance/source && yarn version --no-git-tag-version --no-commit-hooks --no-commit --new-version $(node -p -e \"require('./../../../package.json').version\")"
@@ -45,7 +45,6 @@
"cross-env": "^7.0.3",
"cucumber": "^6.0.5",
"cypress": "^12.17.0",
- "cypress-file-upload": "^3.5.3",
"cypress-network-idle": "^1.14.2",
"date-fns": "^2.25.0",
"dotenv": "^8.2.0",
diff --git a/webapp/assets/_new/icons/svgs/chat-bubble.svg b/webapp/assets/_new/icons/svgs/chat-bubble.svg
new file mode 100644
index 000000000..377b52f2f
--- /dev/null
+++ b/webapp/assets/_new/icons/svgs/chat-bubble.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/webapp/assets/_new/styles/export.scss b/webapp/assets/_new/styles/export.scss
new file mode 100644
index 000000000..88b42bfc9
--- /dev/null
+++ b/webapp/assets/_new/styles/export.scss
@@ -0,0 +1,30 @@
+
+:export {
+ colorPrimary: $color-primary;
+ colorPrimaryActive: $color-primary-active;
+ colorPrimaryLight: $color-primary-light;
+
+ borderColorSoft: $border-color-soft;
+
+ borderRadiusBase: $border-radius-base;
+
+ textColorBase: $text-color-base;
+ textColorSoft: $text-color-soft;
+ textColorInverse: $text-color-inverse;
+
+ boxShadowBase: $box-shadow-base;
+
+ backgroundColorBase: $background-color-base;
+ backgroundColorSoft: $background-color-soft;
+ backgroundColorSoftest: $background-color-softest;
+ backgroundColorPrimary: $background-color-primary;
+
+ colorNeutral30: $color-neutral-30;
+
+ chatMessageColor: $chat-message-color;
+
+ chatMessageBgMe: $chat-message-bg-me;
+ chatMessageBgOthers: $chat-message-bg-others;
+
+ chatNewMessageColor: $chat-new-message-color;
+ }
\ No newline at end of file
diff --git a/webapp/assets/_new/styles/tokens.scss b/webapp/assets/_new/styles/tokens.scss
index 22e0214ff..e001ffa84 100644
--- a/webapp/assets/_new/styles/tokens.scss
+++ b/webapp/assets/_new/styles/tokens.scss
@@ -406,4 +406,14 @@ $color-toast-green: $color-success;
$color-ribbon-event: $background-color-third;
$color-ribbon-event-active: $background-color-third-active;
$color-ribbon-article: $background-color-secondary;
-$color-ribbon-article-active: $background-color-secondary-active;
\ No newline at end of file
+$color-ribbon-article-active: $background-color-secondary-active;
+
+/**
+ * @tokens Chat Color
+ */
+
+$chat-message-bg-me: $color-primary-light;
+$chat-message-color: $text-color-base;
+$chat-message-bg-others: $color-neutral-80;
+$chat-sidemenu-bg: $color-secondary-active;
+$chat-new-message-color: $color-secondary-active;
diff --git a/webapp/components/Chat/Chat.vue b/webapp/components/Chat/Chat.vue
index 2b9514bf3..cca6c4319 100644
--- a/webapp/components/Chat/Chat.vue
+++ b/webapp/components/Chat/Chat.vue
@@ -15,13 +15,42 @@
:rooms-loaded="true"
show-files="false"
show-audio="false"
+ :styles="JSON.stringify(computedChatStyle)"
:show-footer="true"
@send-message="sendMessage($event.detail[0])"
@fetch-messages="fetchMessages($event.detail[0])"
:responsive-breakpoint="responsiveBreakpoint"
:single-room="singleRoom"
@show-demo-options="showDemoOptions = $event"
- />
+ >
+
+
+
+
+
+ {{ getInitialsName(selectedRoom.roomName) }}
+
+
+
+
+
+
+ {{ getInitialsName(room.roomName) }}
+
+
+
@@ -29,6 +58,7 @@
-
diff --git a/webapp/components/HeaderMenu/HeaderMenu.vue b/webapp/components/HeaderMenu/HeaderMenu.vue
index bef73186b..f4d48220e 100644
--- a/webapp/components/HeaderMenu/HeaderMenu.vue
+++ b/webapp/components/HeaderMenu/HeaderMenu.vue
@@ -74,6 +74,10 @@
+
+
+
+
@@ -92,10 +96,6 @@
-
-
-
-
@@ -131,10 +131,16 @@
@@ -257,10 +263,11 @@ import isEmpty from 'lodash/isEmpty'
import { SHOW_GROUP_BUTTON_IN_HEADER } from '~/constants/groups.js'
import { SHOW_CONTENT_FILTER_HEADER_MENU } from '~/constants/filter.js'
import LOGOS from '~/constants/logos.js'
-import headerMenu from '~/constants/headerMenu.js'
import AvatarMenu from '~/components/AvatarMenu/AvatarMenu'
+import ChatNotificationMenu from '~/components/ChatNotificationMenu/ChatNotificationMenu'
import FilterMenu from '~/components/FilterMenu/FilterMenu.vue'
import GroupButton from '~/components/Group/GroupButton'
+import headerMenu from '~/constants/headerMenu.js'
import InviteButton from '~/components/InviteButton/InviteButton'
import LocaleSwitch from '~/components/LocaleSwitch/LocaleSwitch'
import Logo from '~/components/Logo/Logo'
@@ -269,7 +276,6 @@ import SearchField from '~/components/features/SearchField/SearchField.vue'
import NotificationMenu from '~/components/NotificationMenu/NotificationMenu'
import links from '~/constants/links.js'
import PageParamsLink from '~/components/_new/features/PageParamsLink/PageParamsLink.vue'
-import ChatNotificationMenu from '~/components/ChatNotificationMenu/ChatNotificationMenu'
export default {
components: {
diff --git a/webapp/constants/chat.js b/webapp/constants/chat.js
new file mode 100644
index 000000000..a183a3922
--- /dev/null
+++ b/webapp/constants/chat.js
@@ -0,0 +1,299 @@
+import tokens from './../assets/_new/styles/tokens.scss'
+// import branding from './../assets/styles/imports/_branding.scss'
+
+const styleData = tokens
+
+const STYLE = {
+ light: {
+ general: {
+ color: styleData.textColorBase,
+ colorButtonClear: '#1976d2',
+ colorButton: '#fff',
+ backgroundColorButton: '#1976d2',
+ backgroundInput: '#fff',
+ colorPlaceholder: styleData.textColorSoft,
+ colorCaret: '#1976d2',
+ colorSpinner: styleData.colorPrimary,
+ borderStyle: '1px solid #e1e4e8',
+ backgroundScrollIcon: '#fff',
+ },
+
+ container: {
+ border: 'none',
+ borderRadius: styleData.borderRadiusBase,
+ boxShadow: styleData.boxShadowBase,
+ },
+
+ header: {
+ background: styleData.backgroundColorSoft,
+ colorRoomName: styleData.textColorBase,
+ colorRoomInfo: styleData.textColorSoft,
+ },
+
+ footer: {
+ background: styleData.backgroundColorSoft,
+ borderStyleInput: '1px solid #e1e4e8',
+ borderInputSelected: '#1976d2',
+ backgroundReply: styleData.backgroundColorSoft,
+ backgroundTagActive: styleData.backgroundColorSoft,
+ backgroundTag: styleData.backgroundColorBase,
+ },
+
+ content: {
+ background: styleData.backgroundColorBase,
+ },
+
+ sidemenu: {
+ background: '#fff',
+ backgroundHover: '#f6f6f6',
+ backgroundActive: styleData.colorPrimaryLight,
+ colorActive: '#1976d2',
+ borderColorSearch: '#e1e5e8',
+ },
+
+ dropdown: {
+ background: '#fff',
+ backgroundHover: '#f6f6f6',
+ },
+
+ message: {
+ background: styleData.chatMessageBgOthers,
+ backgroundMe: styleData.chatMessageBgMe,
+ color: styleData.chatMessageColor,
+ colorStarted: '#9ca6af',
+ backgroundDeleted: '#dadfe2',
+ backgroundSelected: '#c2dcf2',
+ colorDeleted: '#757e85',
+ colorUsername: '#9ca6af',
+ colorTimestamp: '#828c94',
+ backgroundDate: '#e5effa',
+ colorDate: '#505a62',
+ backgroundSystem: '#e5effa',
+ colorSystem: '#505a62',
+ backgroundMedia: 'rgba(0, 0, 0, 0.15)',
+ backgroundReply: 'rgba(0, 0, 0, 0.08)',
+ colorReplyUsername: '#0a0a0a',
+ colorReply: '#6e6e6e',
+ colorTag: '#0d579c',
+ backgroundImage: '#ddd',
+ colorNewMessages: styleData.chatNewMessageColor,
+ backgroundScrollCounter: '#0696c7',
+ colorScrollCounter: '#fff',
+ backgroundReaction: '#eee',
+ borderStyleReaction: '1px solid #eee',
+ backgroundReactionHover: '#fff',
+ borderStyleReactionHover: '1px solid #ddd',
+ colorReactionCounter: '#0a0a0a',
+ backgroundReactionMe: '#cfecf5',
+ borderStyleReactionMe: '1px solid #3b98b8',
+ backgroundReactionHoverMe: '#cfecf5',
+ borderStyleReactionHoverMe: '1px solid #3b98b8',
+ colorReactionCounterMe: '#0b59b3',
+ backgroundAudioRecord: '#eb4034',
+ backgroundAudioLine: 'rgba(0, 0, 0, 0.15)',
+ backgroundAudioProgress: '#455247',
+ backgroundAudioProgressSelector: '#455247',
+ colorFileExtension: '#757e85',
+ },
+
+ markdown: {
+ background: 'rgba(239, 239, 239, 0.7)',
+ border: 'rgba(212, 212, 212, 0.9)',
+ color: '#e01e5a',
+ colorMulti: '#0a0a0a',
+ },
+
+ room: {
+ colorUsername: '#0a0a0a',
+ colorMessage: '#67717a',
+ colorTimestamp: '#a2aeb8',
+ colorStateOnline: '#4caf50',
+ colorStateOffline: '#9ca6af',
+ backgroundCounterBadge: '#0696c7',
+ colorCounterBadge: '#fff',
+ },
+
+ emoji: {
+ background: '#fff',
+ },
+
+ icons: {
+ search: '#9ca6af',
+ add: styleData.colorPrimary,
+ toggle: styleData.colorNeutral30,
+ menu: styleData.colorNeutral30,
+ close: '#9ca6af',
+ closeImage: '#fff',
+ file: styleData.colorPrimary,
+ paperclip: styleData.colorPrimary,
+ closeOutline: '#000',
+ closePreview: '#fff',
+ send: styleData.colorPrimary,
+ sendDisabled: '#9ca6af',
+ emoji: styleData.colorPrimary,
+ emojiReaction: 'rgba(0, 0, 0, 0.3)',
+ document: styleData.colorPrimary,
+ pencil: '#9e9e9e',
+ checkmark: '#9e9e9e',
+ checkmarkSeen: '#0696c7',
+ eye: '#fff',
+ dropdownMessage: '#fff',
+ dropdownMessageBackground: 'rgba(0, 0, 0, 0.25)',
+ dropdownRoom: '#9e9e9e',
+ dropdownScroll: '#0a0a0a',
+ microphone: styleData.colorPrimary,
+ audioPlay: '#455247',
+ audioPause: '#455247',
+ audioCancel: '#eb4034',
+ audioConfirm: '#1ba65b',
+ },
+ },
+ dark: {
+ general: {
+ color: '#fff',
+ colorButtonClear: '#fff',
+ colorButton: '#fff',
+ backgroundColorButton: '#1976d2',
+ backgroundInput: '#202223',
+ colorPlaceholder: '#596269',
+ colorCaret: '#fff',
+ colorSpinner: '#fff',
+ borderStyle: 'none',
+ backgroundScrollIcon: '#fff',
+ },
+
+ container: {
+ border: 'none',
+ borderRadius: '4px',
+ boxShadow: '0px 1px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12)',
+ },
+
+ header: {
+ background: '#181a1b',
+ colorRoomName: '#fff',
+ colorRoomInfo: '#9ca6af',
+ },
+
+ footer: {
+ background: '#131415',
+ borderStyleInput: 'none',
+ borderInputSelected: '#1976d2',
+ backgroundReply: '#1b1c1c',
+ backgroundTagActive: '#1b1c1c',
+ backgroundTag: '#131415',
+ },
+
+ content: {
+ background: '#131415',
+ },
+
+ sidemenu: {
+ background: '#181a1b',
+ backgroundHover: '#202224',
+ backgroundActive: '#151617',
+ colorActive: '#fff',
+ borderColorSearch: '#181a1b',
+ },
+
+ dropdown: {
+ background: '#2a2c33',
+ backgroundHover: '#26282e',
+ },
+
+ message: {
+ background: '#22242a',
+ backgroundMe: '#1f7e80',
+ color: '#fff',
+ colorStarted: '#9ca6af',
+ backgroundDeleted: '#1b1c21',
+ backgroundSelected: '#c2dcf2',
+ colorDeleted: '#a2a5a8',
+ colorUsername: '#b3bac9',
+ colorTimestamp: '#ebedf2',
+ backgroundDate: 'rgba(0, 0, 0, 0.3)',
+ colorDate: '#bec5cc',
+ backgroundSystem: 'rgba(0, 0, 0, 0.3)',
+ colorSystem: '#bec5cc',
+ backgroundMedia: 'rgba(0, 0, 0, 0.18)',
+ backgroundReply: 'rgba(0, 0, 0, 0.18)',
+ colorReplyUsername: '#fff',
+ colorReply: '#d6d6d6',
+ colorTag: '#f0c60a',
+ backgroundImage: '#ddd',
+ colorNewMessages: '#fff',
+ backgroundScrollCounter: '#1976d2',
+ colorScrollCounter: '#fff',
+ backgroundReaction: 'none',
+ borderStyleReaction: 'none',
+ backgroundReactionHover: '#202223',
+ borderStyleReactionHover: 'none',
+ colorReactionCounter: '#fff',
+ backgroundReactionMe: '#4e9ad1',
+ borderStyleReactionMe: 'none',
+ backgroundReactionHoverMe: '#4e9ad1',
+ borderStyleReactionHoverMe: 'none',
+ colorReactionCounterMe: '#fff',
+ backgroundAudioRecord: '#eb4034',
+ backgroundAudioLine: 'rgba(255, 255, 255, 0.15)',
+ backgroundAudioProgress: '#b7d4d3',
+ backgroundAudioProgressSelector: '#b7d4d3',
+ colorFileExtension: '#a2a5a8',
+ },
+
+ markdown: {
+ background: 'rgba(239, 239, 239, 0.7)',
+ border: 'rgba(212, 212, 212, 0.9)',
+ color: '#e01e5a',
+ colorMulti: '#0a0a0a',
+ },
+
+ room: {
+ colorUsername: '#fff',
+ colorMessage: '#6c7278',
+ colorTimestamp: '#6c7278',
+ colorStateOnline: '#4caf50',
+ colorStateOffline: '#596269',
+ backgroundCounterBadge: '#1976d2',
+ colorCounterBadge: '#fff',
+ },
+
+ emoji: {
+ background: '#343740',
+ },
+
+ icons: {
+ search: '#596269',
+ add: '#fff',
+ toggle: '#fff',
+ menu: '#fff',
+ close: '#9ca6af',
+ closeImage: '#fff',
+ file: '#1976d2',
+ paperclip: '#fff',
+ closeOutline: '#fff',
+ closePreview: '#fff',
+ send: '#fff',
+ sendDisabled: '#646a70',
+ emoji: '#fff',
+ emojiReaction: '#fff',
+ document: '#1976d2',
+ pencil: '#ebedf2',
+ checkmark: '#ebedf2',
+ checkmarkSeen: '#f0d90a',
+ eye: '#fff',
+ dropdownMessage: '#fff',
+ dropdownMessageBackground: 'rgba(0, 0, 0, 0.25)',
+ dropdownRoom: '#fff',
+ dropdownScroll: '#0a0a0a',
+ microphone: '#fff',
+ audioPlay: '#b7d4d3',
+ audioPause: '#b7d4d3',
+ audioCancel: '#eb4034',
+ audioConfirm: '#1ba65b',
+ },
+ },
+}
+
+export default {
+ STYLE,
+}
diff --git a/webapp/graphql/PostQuery.js b/webapp/graphql/PostQuery.js
index 83eec2a30..29b7a1f07 100644
--- a/webapp/graphql/PostQuery.js
+++ b/webapp/graphql/PostQuery.js
@@ -77,6 +77,10 @@ export const filterPosts = (i18n) => {
eventEnd
eventVenue
eventLocationName
+ eventLocation {
+ lng
+ lat
+ }
eventIsOnline
...post
...postCounts
diff --git a/webapp/layouts/default.vue b/webapp/layouts/default.vue
index f14c4055f..bd518b976 100644
--- a/webapp/layouts/default.vue
+++ b/webapp/layouts/default.vue
@@ -14,15 +14,11 @@
-
- RoomID: {{ $store.getters['chat/showChat'].roomID }}
-
- x
-
-
-
+
- >
diff --git a/webapp/pages/profile/_id/_slug.vue b/webapp/pages/profile/_id/_slug.vue
index 62d2f1be7..ce97cd53a 100644
--- a/webapp/pages/profile/_id/_slug.vue
+++ b/webapp/pages/profile/_id/_slug.vue
@@ -80,13 +80,14 @@
@update="updateFollow"
/>
-
+ {{ $t('chat.userProfileButton.label') }}
@@ -181,6 +182,7 @@