mirror of
https://github.com/Ocelot-Social-Community/Ocelot-Social.git
synced 2025-12-13 07:46:06 +00:00
Merge branch 'master' into migrate-styleguide-card
This commit is contained in:
commit
701564c708
@ -70,7 +70,7 @@
|
|||||||
"lodash": "~4.17.14",
|
"lodash": "~4.17.14",
|
||||||
"merge-graphql-schemas": "^1.7.6",
|
"merge-graphql-schemas": "^1.7.6",
|
||||||
"metascraper": "^5.11.0",
|
"metascraper": "^5.11.0",
|
||||||
"metascraper-audio": "^5.10.7",
|
"metascraper-audio": "^5.11.1",
|
||||||
"metascraper-author": "^5.10.7",
|
"metascraper-author": "^5.10.7",
|
||||||
"metascraper-clearbit-logo": "^5.3.0",
|
"metascraper-clearbit-logo": "^5.3.0",
|
||||||
"metascraper-date": "^5.10.7",
|
"metascraper-date": "^5.10.7",
|
||||||
@ -112,7 +112,7 @@
|
|||||||
"@babel/plugin-proposal-throw-expressions": "^7.8.3",
|
"@babel/plugin-proposal-throw-expressions": "^7.8.3",
|
||||||
"@babel/preset-env": "~7.8.4",
|
"@babel/preset-env": "~7.8.4",
|
||||||
"@babel/register": "^7.8.3",
|
"@babel/register": "^7.8.3",
|
||||||
"apollo-server-testing": "~2.10.0",
|
"apollo-server-testing": "~2.10.1",
|
||||||
"babel-core": "~7.0.0-0",
|
"babel-core": "~7.0.0-0",
|
||||||
"babel-eslint": "~10.0.3",
|
"babel-eslint": "~10.0.3",
|
||||||
"babel-jest": "~25.1.0",
|
"babel-jest": "~25.1.0",
|
||||||
|
|||||||
@ -2,11 +2,21 @@ import extractMentionedUsers from './mentions/extractMentionedUsers'
|
|||||||
import { validateNotifyUsers } from '../validation/validationMiddleware'
|
import { validateNotifyUsers } from '../validation/validationMiddleware'
|
||||||
import { pubsub, NOTIFICATION_ADDED } from '../../server'
|
import { pubsub, NOTIFICATION_ADDED } from '../../server'
|
||||||
|
|
||||||
|
const publishNotifications = async (...promises) => {
|
||||||
|
const notifications = await Promise.all(promises)
|
||||||
|
notifications
|
||||||
|
.flat()
|
||||||
|
.forEach(notificationAdded => pubsub.publish(NOTIFICATION_ADDED, { notificationAdded }))
|
||||||
|
}
|
||||||
|
|
||||||
const handleContentDataOfPost = async (resolve, root, args, context, resolveInfo) => {
|
const handleContentDataOfPost = async (resolve, root, args, context, resolveInfo) => {
|
||||||
const idsOfUsers = extractMentionedUsers(args.content)
|
const idsOfUsers = extractMentionedUsers(args.content)
|
||||||
const post = await resolve(root, args, context, resolveInfo)
|
const post = await resolve(root, args, context, resolveInfo)
|
||||||
if (post && idsOfUsers && idsOfUsers.length)
|
if (post) {
|
||||||
await notifyUsersOfMention('Post', post.id, idsOfUsers, 'mentioned_in_post', context)
|
await publishNotifications(
|
||||||
|
notifyUsersOfMention('Post', post.id, idsOfUsers, 'mentioned_in_post', context),
|
||||||
|
)
|
||||||
|
}
|
||||||
return post
|
return post
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -16,10 +26,10 @@ const handleContentDataOfComment = async (resolve, root, args, context, resolveI
|
|||||||
const comment = await resolve(root, args, context, resolveInfo)
|
const comment = await resolve(root, args, context, resolveInfo)
|
||||||
const [postAuthor] = await postAuthorOfComment(comment.id, { context })
|
const [postAuthor] = await postAuthorOfComment(comment.id, { context })
|
||||||
idsOfUsers = idsOfUsers.filter(id => id !== postAuthor.id)
|
idsOfUsers = idsOfUsers.filter(id => id !== postAuthor.id)
|
||||||
if (idsOfUsers && idsOfUsers.length)
|
await publishNotifications(
|
||||||
await notifyUsersOfMention('Comment', comment.id, idsOfUsers, 'mentioned_in_comment', context)
|
notifyUsersOfMention('Comment', comment.id, idsOfUsers, 'mentioned_in_comment', context),
|
||||||
if (context.user.id !== postAuthor.id)
|
notifyUsersOfComment('Comment', comment.id, postAuthor.id, 'commented_on_post', context),
|
||||||
await notifyUsersOfComment('Comment', comment.id, postAuthor.id, 'commented_on_post', context)
|
)
|
||||||
return comment
|
return comment
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -29,7 +39,7 @@ const postAuthorOfComment = async (commentId, { context }) => {
|
|||||||
try {
|
try {
|
||||||
postAuthorId = await session.readTransaction(transaction => {
|
postAuthorId = await session.readTransaction(transaction => {
|
||||||
return transaction.run(
|
return transaction.run(
|
||||||
`
|
`
|
||||||
MATCH (author:User)-[:WROTE]->(:Post)<-[:COMMENTS]-(:Comment { id: $commentId })
|
MATCH (author:User)-[:WROTE]->(:Post)<-[:COMMENTS]-(:Comment { id: $commentId })
|
||||||
RETURN author { .id } as authorId
|
RETURN author { .id } as authorId
|
||||||
`,
|
`,
|
||||||
@ -43,6 +53,7 @@ const postAuthorOfComment = async (commentId, { context }) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const notifyUsersOfMention = async (label, id, idsOfUsers, reason, context) => {
|
const notifyUsersOfMention = async (label, id, idsOfUsers, reason, context) => {
|
||||||
|
if (!(idsOfUsers && idsOfUsers.length)) return []
|
||||||
await validateNotifyUsers(label, reason)
|
await validateNotifyUsers(label, reason)
|
||||||
let mentionedCypher
|
let mentionedCypher
|
||||||
switch (reason) {
|
switch (reason) {
|
||||||
@ -91,8 +102,8 @@ const notifyUsersOfMention = async (label, id, idsOfUsers, reason, context) => {
|
|||||||
return notificationTransactionResponse.records.map(record => record.get('notification'))
|
return notificationTransactionResponse.records.map(record => record.get('notification'))
|
||||||
})
|
})
|
||||||
try {
|
try {
|
||||||
const [notification] = await writeTxResultPromise
|
const notifications = await writeTxResultPromise
|
||||||
return pubsub.publish(NOTIFICATION_ADDED, { notificationAdded: notification })
|
return notifications
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
throw new Error(error)
|
throw new Error(error)
|
||||||
} finally {
|
} finally {
|
||||||
@ -101,6 +112,7 @@ const notifyUsersOfMention = async (label, id, idsOfUsers, reason, context) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const notifyUsersOfComment = async (label, commentId, postAuthorId, reason, context) => {
|
const notifyUsersOfComment = async (label, commentId, postAuthorId, reason, context) => {
|
||||||
|
if (context.user.id === postAuthorId) return []
|
||||||
await validateNotifyUsers(label, reason)
|
await validateNotifyUsers(label, reason)
|
||||||
const session = context.driver.session()
|
const session = context.driver.session()
|
||||||
const writeTxResultPromise = await session.writeTransaction(async transaction => {
|
const writeTxResultPromise = await session.writeTransaction(async transaction => {
|
||||||
@ -121,8 +133,8 @@ const notifyUsersOfComment = async (label, commentId, postAuthorId, reason, cont
|
|||||||
return notificationTransactionResponse.records.map(record => record.get('notification'))
|
return notificationTransactionResponse.records.map(record => record.get('notification'))
|
||||||
})
|
})
|
||||||
try {
|
try {
|
||||||
const [notification] = await writeTxResultPromise
|
const notifications = await writeTxResultPromise
|
||||||
return pubsub.publish(NOTIFICATION_ADDED, { notificationAdded: notification })
|
return notifications
|
||||||
} finally {
|
} finally {
|
||||||
session.close()
|
session.close()
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,9 +2,10 @@ import { gql } from '../../helpers/jest'
|
|||||||
import { cleanDatabase } from '../../db/factories'
|
import { cleanDatabase } from '../../db/factories'
|
||||||
import { createTestClient } from 'apollo-server-testing'
|
import { createTestClient } from 'apollo-server-testing'
|
||||||
import { getNeode, getDriver } from '../../db/neo4j'
|
import { getNeode, getDriver } from '../../db/neo4j'
|
||||||
import createServer from '../../server'
|
import createServer, { pubsub } from '../../server'
|
||||||
|
|
||||||
let server, query, mutate, notifiedUser, authenticatedUser
|
let server, query, mutate, notifiedUser, authenticatedUser
|
||||||
|
let publishSpy
|
||||||
const driver = getDriver()
|
const driver = getDriver()
|
||||||
const neode = getNeode()
|
const neode = getNeode()
|
||||||
const categoryIds = ['cat9']
|
const categoryIds = ['cat9']
|
||||||
@ -36,6 +37,7 @@ const createCommentMutation = gql`
|
|||||||
|
|
||||||
beforeAll(async () => {
|
beforeAll(async () => {
|
||||||
await cleanDatabase()
|
await cleanDatabase()
|
||||||
|
publishSpy = jest.spyOn(pubsub, 'publish')
|
||||||
const createServerResult = createServer({
|
const createServerResult = createServer({
|
||||||
context: () => {
|
context: () => {
|
||||||
return {
|
return {
|
||||||
@ -52,6 +54,7 @@ beforeAll(async () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
|
publishSpy.mockClear()
|
||||||
notifiedUser = await neode.create(
|
notifiedUser = await neode.create(
|
||||||
'User',
|
'User',
|
||||||
{
|
{
|
||||||
@ -259,7 +262,15 @@ describe('notifications', () => {
|
|||||||
await createPostAction()
|
await createPostAction()
|
||||||
const expectedContent =
|
const expectedContent =
|
||||||
'Hey <a class="mention" data-mention-id="you" href="/profile/you/al-capone" target="_blank">@al-capone</a> how do you do?'
|
'Hey <a class="mention" data-mention-id="you" href="/profile/you/al-capone" target="_blank">@al-capone</a> how do you do?'
|
||||||
const expected = expect.objectContaining({
|
await expect(
|
||||||
|
query({
|
||||||
|
query: notificationQuery,
|
||||||
|
variables: {
|
||||||
|
read: false,
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
).resolves.toMatchObject({
|
||||||
|
errors: undefined,
|
||||||
data: {
|
data: {
|
||||||
notifications: [
|
notifications: [
|
||||||
{
|
{
|
||||||
@ -275,15 +286,22 @@ describe('notifications', () => {
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
})
|
||||||
|
|
||||||
await expect(
|
it('publishes `NOTIFICATION_ADDED` to me', async () => {
|
||||||
query({
|
await createPostAction()
|
||||||
query: notificationQuery,
|
expect(publishSpy).toHaveBeenCalledWith(
|
||||||
variables: {
|
'NOTIFICATION_ADDED',
|
||||||
read: false,
|
expect.objectContaining({
|
||||||
},
|
notificationAdded: expect.objectContaining({
|
||||||
|
reason: 'mentioned_in_post',
|
||||||
|
to: expect.objectContaining({
|
||||||
|
id: 'you',
|
||||||
|
}),
|
||||||
|
}),
|
||||||
}),
|
}),
|
||||||
).resolves.toEqual(expected)
|
)
|
||||||
|
expect(publishSpy).toHaveBeenCalledTimes(1)
|
||||||
})
|
})
|
||||||
|
|
||||||
describe('updates the post and mentions me again', () => {
|
describe('updates the post and mentions me again', () => {
|
||||||
@ -429,6 +447,11 @@ describe('notifications', () => {
|
|||||||
}),
|
}),
|
||||||
).resolves.toEqual(expected)
|
).resolves.toEqual(expected)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('does not publish `NOTIFICATION_ADDED`', async () => {
|
||||||
|
await createPostAction()
|
||||||
|
expect(publishSpy).not.toHaveBeenCalled()
|
||||||
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -505,7 +528,7 @@ describe('notifications', () => {
|
|||||||
})
|
})
|
||||||
it('sends only one notification with reason commented_on_post, no notification with reason mentioned_in_comment', async () => {
|
it('sends only one notification with reason commented_on_post, no notification with reason mentioned_in_comment', async () => {
|
||||||
await createCommentOnPostAction()
|
await createCommentOnPostAction()
|
||||||
const expected = expect.objectContaining({
|
const expected = {
|
||||||
data: {
|
data: {
|
||||||
notifications: [
|
notifications: [
|
||||||
{
|
{
|
||||||
@ -520,7 +543,7 @@ describe('notifications', () => {
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
})
|
}
|
||||||
|
|
||||||
await expect(
|
await expect(
|
||||||
query({
|
query({
|
||||||
@ -529,7 +552,7 @@ describe('notifications', () => {
|
|||||||
read: false,
|
read: false,
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
).resolves.toEqual(expected)
|
).resolves.toMatchObject(expected, { errors: undefined })
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -554,10 +577,6 @@ describe('notifications', () => {
|
|||||||
|
|
||||||
it('sends no notification', async () => {
|
it('sends no notification', async () => {
|
||||||
await createCommentOnPostAction()
|
await createCommentOnPostAction()
|
||||||
const expected = expect.objectContaining({
|
|
||||||
data: { notifications: [] },
|
|
||||||
})
|
|
||||||
|
|
||||||
await expect(
|
await expect(
|
||||||
query({
|
query({
|
||||||
query: notificationQuery,
|
query: notificationQuery,
|
||||||
@ -565,7 +584,26 @@ describe('notifications', () => {
|
|||||||
read: false,
|
read: false,
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
).resolves.toEqual(expected)
|
).resolves.toMatchObject({
|
||||||
|
data: { notifications: [] },
|
||||||
|
errors: undefined,
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
it('does not publish `NOTIFICATION_ADDED` to authenticated user', async () => {
|
||||||
|
await createCommentOnPostAction()
|
||||||
|
expect(publishSpy).toHaveBeenCalledWith(
|
||||||
|
'NOTIFICATION_ADDED',
|
||||||
|
expect.objectContaining({
|
||||||
|
notificationAdded: expect.objectContaining({
|
||||||
|
reason: 'commented_on_post',
|
||||||
|
to: expect.objectContaining({
|
||||||
|
id: 'postAuthor', // that's expected, it's not me but the post author
|
||||||
|
}),
|
||||||
|
}),
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
expect(publishSpy).toHaveBeenCalledTimes(1)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
@ -1860,10 +1860,10 @@ apollo-engine-reporting-protobuf@^0.4.4:
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@apollo/protobufjs" "^1.0.3"
|
"@apollo/protobufjs" "^1.0.3"
|
||||||
|
|
||||||
apollo-engine-reporting@^1.5.0:
|
apollo-engine-reporting@^1.6.0:
|
||||||
version "1.5.0"
|
version "1.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/apollo-engine-reporting/-/apollo-engine-reporting-1.5.0.tgz#6e3746de14fc87e14c289c0776a2d350e6f50918"
|
resolved "https://registry.yarnpkg.com/apollo-engine-reporting/-/apollo-engine-reporting-1.6.0.tgz#a5073a2e350ea4c8ce6adb5a5b536028ed165390"
|
||||||
integrity sha512-Pe2DelijZ2QHqkqv8E97iOb32l+FIMT2nxpQsuH+nWi+96cCFJJJHjm3RLAPEUuvGOgW9dFYQP3J91EyC5O0tQ==
|
integrity sha512-prA17Tp/WYBJdCd4ey1CnGX8d4Xis1n9PsFmT7x8PV/oNpxG21/x3yNw5kPBZuKAoKz8yEggYtHhkYie1ZBjPQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
apollo-engine-reporting-protobuf "^0.4.4"
|
apollo-engine-reporting-protobuf "^0.4.4"
|
||||||
apollo-graphql "^0.4.0"
|
apollo-graphql "^0.4.0"
|
||||||
@ -1943,10 +1943,10 @@ apollo-server-caching@^0.5.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
lru-cache "^5.0.0"
|
lru-cache "^5.0.0"
|
||||||
|
|
||||||
apollo-server-core@^2.10.0:
|
apollo-server-core@^2.10.0, apollo-server-core@^2.10.1:
|
||||||
version "2.10.0"
|
version "2.10.1"
|
||||||
resolved "https://registry.yarnpkg.com/apollo-server-core/-/apollo-server-core-2.10.0.tgz#b8d51bdffe6529f0e3ca670ee8f1238765cfade4"
|
resolved "https://registry.yarnpkg.com/apollo-server-core/-/apollo-server-core-2.10.1.tgz#5fa4ce7992d0bf1cce616dedf1a22a41c7589c7c"
|
||||||
integrity sha512-x/UK6XvU307W8D/pzTclU04JIjRarcbg5mFPe0nVmO4OTc26uQgKi1WlZkcewXsAUnn+nDwKVn2c2G3dHEgXzQ==
|
integrity sha512-BVITSJRMnj+CWFkjt7FMcaoqg/Ni9gfyVE9iu8bUc1IebBfFDcQj652Iolr7dTqyUziN2jbf0wfcybKYJLQHQQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@apollographql/apollo-tools" "^0.4.3"
|
"@apollographql/apollo-tools" "^0.4.3"
|
||||||
"@apollographql/graphql-playground-html" "1.6.24"
|
"@apollographql/graphql-playground-html" "1.6.24"
|
||||||
@ -1954,7 +1954,7 @@ apollo-server-core@^2.10.0:
|
|||||||
"@types/ws" "^6.0.0"
|
"@types/ws" "^6.0.0"
|
||||||
apollo-cache-control "^0.8.11"
|
apollo-cache-control "^0.8.11"
|
||||||
apollo-datasource "^0.7.0"
|
apollo-datasource "^0.7.0"
|
||||||
apollo-engine-reporting "^1.5.0"
|
apollo-engine-reporting "^1.6.0"
|
||||||
apollo-server-caching "^0.5.1"
|
apollo-server-caching "^0.5.1"
|
||||||
apollo-server-env "^2.4.3"
|
apollo-server-env "^2.4.3"
|
||||||
apollo-server-errors "^2.3.4"
|
apollo-server-errors "^2.3.4"
|
||||||
@ -2012,12 +2012,12 @@ apollo-server-plugin-base@^0.6.10:
|
|||||||
dependencies:
|
dependencies:
|
||||||
apollo-server-types "^0.2.10"
|
apollo-server-types "^0.2.10"
|
||||||
|
|
||||||
apollo-server-testing@~2.10.0:
|
apollo-server-testing@~2.10.1:
|
||||||
version "2.10.0"
|
version "2.10.1"
|
||||||
resolved "https://registry.yarnpkg.com/apollo-server-testing/-/apollo-server-testing-2.10.0.tgz#c8d7fc2d4e6eaf84232aaa7c125d9fae691fbcf4"
|
resolved "https://registry.yarnpkg.com/apollo-server-testing/-/apollo-server-testing-2.10.1.tgz#c493c41f51c122b3d87c0e5ffba4f0590b924593"
|
||||||
integrity sha512-wBJ/CT3ZN5nmSySMqgpAFwX/I3yzsQhRGR8MCK/16MjhEZH6svNaJWzoif6gaocj0NyVBJvOIijuMTecG9+6vg==
|
integrity sha512-KsvLzDb/mIf5h93QUxGXymywZq8urnXUPqckBxyNaF08puAO8VO0c4EE0VvuVZnelKZvlKlU0tYQQNQsc9iHfg==
|
||||||
dependencies:
|
dependencies:
|
||||||
apollo-server-core "^2.10.0"
|
apollo-server-core "^2.10.1"
|
||||||
|
|
||||||
apollo-server-types@^0.2.10:
|
apollo-server-types@^0.2.10:
|
||||||
version "0.2.10"
|
version "0.2.10"
|
||||||
@ -6197,12 +6197,12 @@ merge2@^1.3.0:
|
|||||||
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81"
|
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81"
|
||||||
integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==
|
integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==
|
||||||
|
|
||||||
metascraper-audio@^5.10.7:
|
metascraper-audio@^5.11.1:
|
||||||
version "5.10.7"
|
version "5.11.1"
|
||||||
resolved "https://registry.yarnpkg.com/metascraper-audio/-/metascraper-audio-5.10.7.tgz#ba9f8333a7b71d388a0bf88dff64fc4f06595566"
|
resolved "https://registry.yarnpkg.com/metascraper-audio/-/metascraper-audio-5.11.1.tgz#46a45fc8d9c4ccc1c24340d46a8c25dc3685d7b9"
|
||||||
integrity sha512-VHZlT21bh/TWnHOQMGret3UcMdJOsyWvagK7MG8rLczYmrPEtvxnJjwPhyrEj1oJC+fz2P//bfQ6gyrD4HrmEQ==
|
integrity sha512-L5eGfw5cOww4/f3ppMa/k+bix3LdICKcKJ2WVTLgz1QkKTWt5IQrgdW+kRfwUdaUTH6w0Tco+nOO7yUCaWytAQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@metascraper/helpers" "^5.10.7"
|
"@metascraper/helpers" "^5.11.1"
|
||||||
|
|
||||||
metascraper-author@^5.10.7:
|
metascraper-author@^5.10.7:
|
||||||
version "5.10.7"
|
version "5.10.7"
|
||||||
|
|||||||
@ -342,7 +342,6 @@ Then(
|
|||||||
|
|
||||||
Given("I am logged in with these credentials:", table => {
|
Given("I am logged in with these credentials:", table => {
|
||||||
loginCredentials = table.hashes()[0];
|
loginCredentials = table.hashes()[0];
|
||||||
cy.debug();
|
|
||||||
cy.factory().build("user", {
|
cy.factory().build("user", {
|
||||||
...termsAndConditionsAgreedVersion,
|
...termsAndConditionsAgreedVersion,
|
||||||
name: loginCredentials.email,
|
name: loginCredentials.email,
|
||||||
@ -420,7 +419,6 @@ When("mention {string} in the text", mention => {
|
|||||||
cy.get(".suggestion-list__item")
|
cy.get(".suggestion-list__item")
|
||||||
.contains(mention)
|
.contains(mention)
|
||||||
.click();
|
.click();
|
||||||
cy.debug();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
Then("the notification gets marked as read", () => {
|
Then("the notification gets marked as read", () => {
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
<template>
|
<template>
|
||||||
<div id="comments" class="comment-list">
|
<div id="comments" class="comment-list">
|
||||||
<h3 class="title">
|
<h3 class="title">
|
||||||
<counter-icon icon="comments" :count="post.comments.length" />
|
<counter-icon icon="comments" :count="postComments.length" />
|
||||||
{{ $t('common.comment', null, 0) }}
|
{{ $t('common.comment', null, 0) }}
|
||||||
</h3>
|
</h3>
|
||||||
<div v-if="post.comments && post.comments.length" id="comments" class="comments">
|
<div v-if="postComments" id="comments" class="comments">
|
||||||
<comment-card
|
<comment-card
|
||||||
v-for="comment in post.comments"
|
v-for="comment in postComments"
|
||||||
:key="comment.id"
|
:key="comment.id"
|
||||||
:comment="comment"
|
:comment="comment"
|
||||||
:postId="post.id"
|
:postId="post.id"
|
||||||
@ -35,6 +35,11 @@ export default {
|
|||||||
required: true,
|
required: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
computed: {
|
||||||
|
postComments() {
|
||||||
|
return (this.post && this.post.comments) || []
|
||||||
|
},
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
reply(message) {
|
reply(message) {
|
||||||
this.$emit('reply', message)
|
this.$emit('reply', message)
|
||||||
@ -43,7 +48,7 @@ export default {
|
|||||||
return anchor === '#comments'
|
return anchor === '#comments'
|
||||||
},
|
},
|
||||||
updateCommentList(updatedComment) {
|
updateCommentList(updatedComment) {
|
||||||
this.post.comments = this.post.comments.map(comment => {
|
this.postComments = this.postComments.map(comment => {
|
||||||
return comment.id === updatedComment.id ? updatedComment : comment
|
return comment.id === updatedComment.id ? updatedComment : comment
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|||||||
@ -3,107 +3,36 @@
|
|||||||
<user-avatar v-if="showAvatar" size="small" />
|
<user-avatar v-if="showAvatar" size="small" />
|
||||||
<span class="info anonymous">{{ $t('profile.userAnonym') }}</span>
|
<span class="info anonymous">{{ $t('profile.userAnonym') }}</span>
|
||||||
</div>
|
</div>
|
||||||
<dropdown
|
<div v-else :class="[{ 'disabled-content': user.disabled }]" placement="top-start">
|
||||||
v-else
|
<nuxt-link :to="userLink" :class="['user-teaser']">
|
||||||
:class="[{ 'disabled-content': user.disabled }]"
|
<user-avatar v-if="showAvatar" :user="user" size="small" />
|
||||||
placement="top-start"
|
<div class="info">
|
||||||
offset="0"
|
<span class="text">
|
||||||
>
|
<span class="slug">{{ userSlug }}</span>
|
||||||
<template #default="{ openMenu, closeMenu, isOpen }">
|
<span v-if="dateTime">{{ userName }}</span>
|
||||||
<nuxt-link
|
</span>
|
||||||
:to="userLink"
|
<span v-if="dateTime" class="text">
|
||||||
:class="['user-teaser', isOpen && 'active']"
|
<base-icon name="clock" />
|
||||||
@mouseover.native="showPopover ? openMenu(true) : () => {}"
|
<hc-relative-date-time :date-time="dateTime" />
|
||||||
@mouseleave.native="closeMenu(true)"
|
<slot name="dateTime"></slot>
|
||||||
>
|
</span>
|
||||||
<user-avatar v-if="showAvatar" :user="user" size="small" />
|
<span v-else class="text">{{ userName }}</span>
|
||||||
<div class="info">
|
|
||||||
<span class="text">
|
|
||||||
<span class="slug">{{ userSlug }}</span>
|
|
||||||
<span v-if="dateTime">{{ userName }}</span>
|
|
||||||
</span>
|
|
||||||
<span v-if="dateTime" class="text">
|
|
||||||
<base-icon name="clock" />
|
|
||||||
<hc-relative-date-time :date-time="dateTime" />
|
|
||||||
<slot name="dateTime"></slot>
|
|
||||||
</span>
|
|
||||||
<span v-else class="text">{{ userName }}</span>
|
|
||||||
</div>
|
|
||||||
</nuxt-link>
|
|
||||||
</template>
|
|
||||||
<template #popover v-if="showPopover">
|
|
||||||
<div style="min-width: 250px">
|
|
||||||
<hc-badges v-if="user.badges && user.badges.length" :badges="user.badges" />
|
|
||||||
<ds-text
|
|
||||||
v-if="user.location"
|
|
||||||
align="center"
|
|
||||||
color="soft"
|
|
||||||
size="small"
|
|
||||||
style="margin-top: 5px"
|
|
||||||
bold
|
|
||||||
>
|
|
||||||
<base-icon name="map-marker" />
|
|
||||||
{{ user.location.name }}
|
|
||||||
</ds-text>
|
|
||||||
<ds-flex style="margin-top: -10px">
|
|
||||||
<ds-flex-item class="ds-tab-nav-item">
|
|
||||||
<ds-space margin="small">
|
|
||||||
<ds-number
|
|
||||||
:count="user.followedByCount"
|
|
||||||
:label="$t('profile.followers')"
|
|
||||||
size="x-large"
|
|
||||||
/>
|
|
||||||
</ds-space>
|
|
||||||
</ds-flex-item>
|
|
||||||
<ds-flex-item class="ds-tab-nav-item ds-tab-nav-item-active">
|
|
||||||
<ds-space margin="small">
|
|
||||||
<ds-number
|
|
||||||
:count="user.contributionsCount"
|
|
||||||
:label="$t('common.post', null, user.contributionsCount)"
|
|
||||||
/>
|
|
||||||
</ds-space>
|
|
||||||
</ds-flex-item>
|
|
||||||
<ds-flex-item class="ds-tab-nav-item">
|
|
||||||
<ds-space margin="small">
|
|
||||||
<ds-number
|
|
||||||
:count="user.commentedCount"
|
|
||||||
:label="$t('common.comment', null, user.commentedCount)"
|
|
||||||
/>
|
|
||||||
</ds-space>
|
|
||||||
</ds-flex-item>
|
|
||||||
</ds-flex>
|
|
||||||
<ds-flex v-if="!itsMe" gutter="x-small" style="margin-bottom: 0;">
|
|
||||||
<ds-flex-item>
|
|
||||||
<hc-follow-button
|
|
||||||
:follow-id="user.id"
|
|
||||||
:is-followed="user.followedByCurrentUser"
|
|
||||||
@optimistic="optimisticFollow"
|
|
||||||
@update="updateFollow"
|
|
||||||
/>
|
|
||||||
</ds-flex-item>
|
|
||||||
</ds-flex>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</nuxt-link>
|
||||||
</dropdown>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { mapGetters } from 'vuex'
|
import { mapGetters } from 'vuex'
|
||||||
|
|
||||||
import HcRelativeDateTime from '~/components/RelativeDateTime'
|
import HcRelativeDateTime from '~/components/RelativeDateTime'
|
||||||
import HcFollowButton from '~/components/FollowButton'
|
|
||||||
import HcBadges from '~/components/Badges'
|
|
||||||
import UserAvatar from '~/components/_new/generic/UserAvatar/UserAvatar'
|
import UserAvatar from '~/components/_new/generic/UserAvatar/UserAvatar'
|
||||||
import Dropdown from '~/components/Dropdown'
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'UserTeaser',
|
name: 'UserTeaser',
|
||||||
components: {
|
components: {
|
||||||
HcRelativeDateTime,
|
HcRelativeDateTime,
|
||||||
HcFollowButton,
|
|
||||||
UserAvatar,
|
UserAvatar,
|
||||||
HcBadges,
|
|
||||||
Dropdown,
|
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
user: { type: Object, default: null },
|
user: { type: Object, default: null },
|
||||||
|
|||||||
@ -40,7 +40,7 @@
|
|||||||
"tagCountUnique": "Benutzer"
|
"tagCountUnique": "Benutzer"
|
||||||
},
|
},
|
||||||
"invites": {
|
"invites": {
|
||||||
"description": "Einladungen sind ein wunderbarer Weg, deine Freund in deinem Netzwerk zu haben …",
|
"description": "Einladungen sind eine wunderbare Möglichkeit, Deine Freunde in Deinem Netzwerk zu haben …",
|
||||||
"name": "Benutzer einladen",
|
"name": "Benutzer einladen",
|
||||||
"title": "Leute einladen"
|
"title": "Leute einladen"
|
||||||
},
|
},
|
||||||
@ -66,7 +66,7 @@
|
|||||||
"table": {
|
"table": {
|
||||||
"columns": {
|
"columns": {
|
||||||
"createdAt": "Erstellt am",
|
"createdAt": "Erstellt am",
|
||||||
"email": "E-mail",
|
"email": "E-Mail",
|
||||||
"name": "Name",
|
"name": "Name",
|
||||||
"number": "Nr.",
|
"number": "Nr.",
|
||||||
"role": "Rolle",
|
"role": "Rolle",
|
||||||
@ -81,9 +81,9 @@
|
|||||||
"list": {
|
"list": {
|
||||||
"0": "Aufforderung zum sofortigen Abstellen des inakzeptablen Verhaltens",
|
"0": "Aufforderung zum sofortigen Abstellen des inakzeptablen Verhaltens",
|
||||||
"1": "Sperren oder Löschen von Kommentaren",
|
"1": "Sperren oder Löschen von Kommentaren",
|
||||||
"2": "Temporärer Ausschluss aus dem jeweiligen Beitrag",
|
"2": "Vorübergehender Ausschluss aus dem jeweiligen Beitrag",
|
||||||
"3": "Sperren bzw. Löschen von Inhalten",
|
"3": "Sperren bzw. Löschen von Inhalten",
|
||||||
"4": "Temporärer Entzug von Schreibrechten",
|
"4": "Vorübergehender Entzug von Schreibrechten",
|
||||||
"5": "Vorübergehender Ausschluss aus dem Netzwerk",
|
"5": "Vorübergehender Ausschluss aus dem Netzwerk",
|
||||||
"6": "Endgültiger Ausschluss aus dem Netzwerk",
|
"6": "Endgültiger Ausschluss aus dem Netzwerk",
|
||||||
"7": "Verstöße gegen deutsches Recht können zur Anzeige gebracht werden."
|
"7": "Verstöße gegen deutsches Recht können zur Anzeige gebracht werden."
|
||||||
@ -93,10 +93,10 @@
|
|||||||
"expected-behaviour": {
|
"expected-behaviour": {
|
||||||
"description": "Die folgenden Verhaltensweisen werden von allen Community-Mitgliedern erwartet und gefordert:",
|
"description": "Die folgenden Verhaltensweisen werden von allen Community-Mitgliedern erwartet und gefordert:",
|
||||||
"list": {
|
"list": {
|
||||||
"0": "Sei rücksichtsvoll und respektvoll bei dem was Du schreibst und tust.",
|
"0": "Sei rücksichtsvoll und respektvoll, bei dem, was Du schreibst und tust.",
|
||||||
"1": "Versuche auf andere zuzugehen, bevor ein Konflikt entsteht.",
|
"1": "Versuche auf andere zuzugehen, bevor ein Konflikt entsteht.",
|
||||||
"2": "Vermeide erniedrigende, diskriminierende oder belästigende Verhaltensweisen und Ausdrücke.",
|
"2": "Vermeide erniedrigende, diskriminierende oder belästigende Verhaltensweisen und Ausdrücke.",
|
||||||
"3": "Gehe achtsam mit Deiner Umgebung um. Informiere den Support bei gefährlichen Situationen, wenn eine Person in Not ist oder bei Verstößen gegen diesen Verhaltenskodex, auch wenn sie unbedeutend erscheinen."
|
"3": "Achte Dein Umfeld und Deine Mitmenschen. Warne die Verantwortlichen der Community, falls Du eine gefährliche Situation, jemanden in Not oder Verstöße gegen diesen Verhaltenskodex bemerkst, auch wenn diese unbedeutend erscheinen."
|
||||||
},
|
},
|
||||||
"title": "Erwartetes Verhalten"
|
"title": "Erwartetes Verhalten"
|
||||||
},
|
},
|
||||||
@ -114,9 +114,9 @@
|
|||||||
"description": "Die folgenden Verhaltensweisen sind in unserer Community inakzeptabel:",
|
"description": "Die folgenden Verhaltensweisen sind in unserer Community inakzeptabel:",
|
||||||
"list": {
|
"list": {
|
||||||
"0": "Diskriminierende Beiträge, Kommentare, Äußerungen oder Beleidigungen, insbesondere solche, die sich auf Geschlecht, sexuelle Orientierung, Rasse, Religion, politische oder weltanschauliche Ausrichtung oder Behinderung beziehen.",
|
"0": "Diskriminierende Beiträge, Kommentare, Äußerungen oder Beleidigungen, insbesondere solche, die sich auf Geschlecht, sexuelle Orientierung, Rasse, Religion, politische oder weltanschauliche Ausrichtung oder Behinderung beziehen.",
|
||||||
"1": "Das Posten oder Verlinken eindeutig pornografischen Materials.",
|
"1": "Das Senden oder Verlinken eindeutig pornografischen Materials.",
|
||||||
"2": "Verherrlichung oder Verharmlosung grausamer oder unmenschlicher Gewalttätigkeiten.",
|
"2": "Verherrlichung oder Verharmlosung grausamer oder unmenschlicher Gewalttätigkeiten.",
|
||||||
"3": "Das Veröffentlichen von personenbezogenen Daten anderer ohne deren Einverständnis oder das Androhen dessen (\"Doxing\").",
|
"3": "Das Veröffentlichen von personenbezogenen Daten anderer ohne deren Einverständnis oder das Androhen dessen („Doxing“).",
|
||||||
"4": "Absichtliche Einschüchterung, Stalking oder Verfolgung.",
|
"4": "Absichtliche Einschüchterung, Stalking oder Verfolgung.",
|
||||||
"5": "Bewerben von Produkten und Dienstleistungen mit kommerzieller Absicht.",
|
"5": "Bewerben von Produkten und Dienstleistungen mit kommerzieller Absicht.",
|
||||||
"6": "Strafbares Verhalten bzw. Verstoß gegen deutsches Recht.",
|
"6": "Strafbares Verhalten bzw. Verstoß gegen deutsches Recht.",
|
||||||
@ -157,7 +157,7 @@
|
|||||||
"user": "Benutzer ::: Benutzer",
|
"user": "Benutzer ::: Benutzer",
|
||||||
"validations": {
|
"validations": {
|
||||||
"categories": "es müssen eine bis drei Kategorien ausgewählt werden",
|
"categories": "es müssen eine bis drei Kategorien ausgewählt werden",
|
||||||
"email": "muss eine gültige E-Mail Adresse sein",
|
"email": "muss eine gültige E-Mail-Adresse sein",
|
||||||
"url": "muss eine gültige URL sein"
|
"url": "muss eine gültige URL sein"
|
||||||
},
|
},
|
||||||
"versus": "Versus"
|
"versus": "Versus"
|
||||||
@ -165,7 +165,7 @@
|
|||||||
"components": {
|
"components": {
|
||||||
"enter-nonce": {
|
"enter-nonce": {
|
||||||
"form": {
|
"form": {
|
||||||
"description": "Öffne dein E-Mail Postfach und gib den Code ein, den wir geschickt haben.",
|
"description": "Öffne Dein E-Mail Postfach und gib den Code ein, den wir geschickt haben.",
|
||||||
"next": "Weiter",
|
"next": "Weiter",
|
||||||
"nonce": "Code eingeben",
|
"nonce": "Code eingeben",
|
||||||
"validations": {
|
"validations": {
|
||||||
@ -181,9 +181,9 @@
|
|||||||
},
|
},
|
||||||
"request": {
|
"request": {
|
||||||
"form": {
|
"form": {
|
||||||
"description": "Eine Mail zum Zurücksetzen des Passworts wird an die angegebene E-Mail Adresse geschickt.",
|
"description": "Eine E-Mail zum Zurücksetzen des Passworts wird an die angegebene Adresse geschickt.",
|
||||||
"submit": "E-Mail anfordern",
|
"submit": "E-Mail anfordern",
|
||||||
"submitted": "Eine E-Mail mit weiteren Instruktionen wurde verschickt an <b>{email}</b>"
|
"submitted": "Eine E-Mail mit weiteren Hinweisen wurde verschickt an <b>{email}</b>"
|
||||||
},
|
},
|
||||||
"title": "Passwort zurücksetzen"
|
"title": "Passwort zurücksetzen"
|
||||||
}
|
}
|
||||||
@ -191,25 +191,25 @@
|
|||||||
"registration": {
|
"registration": {
|
||||||
"create-user-account": {
|
"create-user-account": {
|
||||||
"error": "Es konnte kein Benutzerkonto erstellt werden!",
|
"error": "Es konnte kein Benutzerkonto erstellt werden!",
|
||||||
"help": "Vielleicht war der Bestätigungscode falsch oder abgelaufen? Wenn das Problem weiterhin besteht, schick uns gerne eine E-Mail an:",
|
"help": "Vielleicht war der Bestätigungscode falsch oder abgelaufen? Wenn das Problem weiterhin besteht, schicke uns gerne eine E-Mail an:",
|
||||||
"success": "Dein Benutzerkonto wurde erstellt!",
|
"success": "Dein Benutzerkonto wurde erstellt!",
|
||||||
"title": "Benutzerkonto anlegen"
|
"title": "Benutzerkonto anlegen"
|
||||||
},
|
},
|
||||||
"signup": {
|
"signup": {
|
||||||
"form": {
|
"form": {
|
||||||
"data-privacy": "Ich habe die <a href=\"https://human-connection.org/datenschutz/\" target=\"_blank\"><ds-text bold color=\"primary\" >Datenschutzerklärung</ds-text></a> gelesen und verstanden",
|
"data-privacy": "Ich habe die <a href=\"https://human-connection.org/datenschutz/\" target=\"_blank\"><ds-text bold color=\"primary\" >Datenschutzerklärung</ds-text></a> gelesen und verstanden",
|
||||||
"description": "Um loszulegen, kannst du dich hier kostenfrei registrieren:",
|
"description": "Um loszulegen, kannst Du Dich hier kostenfrei registrieren:",
|
||||||
"errors": {
|
"errors": {
|
||||||
"email-exists": "Es gibt schon ein Benutzerkonto mit dieser E-Mail Adresse!",
|
"email-exists": "Es gibt schon ein Benutzerkonto mit dieser E-Mail-Adresse!",
|
||||||
"invalid-invitation-token": "Es sieht so aus, als ob der Einladungscode schon eingelöst wurde. Jeder Code kann nur einmalig benutzt werden."
|
"invalid-invitation-token": "Es sieht so aus, als ob der Einladungscode schon eingelöst wurde. Jeder Code kann nur einmalig benutzt werden."
|
||||||
},
|
},
|
||||||
"invitation-code": "Dein Einladungscode lautet: <b>{code}</b>",
|
"invitation-code": "Dein Einladungscode lautet: <b>{code}</b>",
|
||||||
"minimum-age": "Ich bin 18 Jahre oder älter.",
|
"minimum-age": "Ich bin 18 Jahre oder älter.",
|
||||||
"no-commercial": "Ich habe keine kommerziellen Absichten und ich repräsentiere kein kommerzielles Unternehmen oder Organisation.",
|
"no-commercial": "Ich habe keine kommerziellen Absichten und ich repräsentiere kein kommerzielles Unternehmen oder Organisation.",
|
||||||
"no-political": "Ich bin nicht im Auftrag einer Partei oder politischen Organisation im Netzwerk. ",
|
"no-political": "Ich bin nicht im Auftrag einer Partei oder politischen Organisation im Netzwerk.",
|
||||||
"submit": "Konto erstellen",
|
"submit": "Konto erstellen",
|
||||||
"success": "Eine Mail mit einem Bestätigungslink für die Registrierung wurde an <b>{email}</b> geschickt",
|
"success": "Eine E-Mail mit einem Link zum Abschließen Deiner Registrierung wurde an <b>{email}</b> geschickt",
|
||||||
"terms-and-condition": "Ich stimme den <a href=\"/terms-and-conditions\"><ds-text bold color=\"primary\" > Nutzungsbedingungen</ds-text></a>zu."
|
"terms-and-condition": "Ich stimme den <a href=\"/terms-and-conditions\"><ds-text bold color=\"primary\" >Nutzungsbedingungen</ds-text></a> zu."
|
||||||
},
|
},
|
||||||
"title": "Mach mit bei Human Connection!",
|
"title": "Mach mit bei Human Connection!",
|
||||||
"unavailable": "Leider ist die öffentliche Registrierung von Benutzerkonten auf diesem Server derzeit nicht möglich."
|
"unavailable": "Leider ist die öffentliche Registrierung von Benutzerkonten auf diesem Server derzeit nicht möglich."
|
||||||
@ -250,10 +250,10 @@
|
|||||||
"surprised": "Erstaunt"
|
"surprised": "Erstaunt"
|
||||||
},
|
},
|
||||||
"filterALL": "Alle Beiträge anzeigen",
|
"filterALL": "Alle Beiträge anzeigen",
|
||||||
"filterFollow": "Beiträge filtern von Usern denen ich folge",
|
"filterFollow": "Beiträge von Benutzern filtern, denen ich folge",
|
||||||
"inappropriatePicture": "Dieses Bild kann für einige Menschen unangemessen sein.",
|
"inappropriatePicture": "Dieses Bild kann für einige Menschen unangemessen sein.",
|
||||||
"inappropriatePictureText": "Wann soll ein Foto versteckt werden",
|
"inappropriatePictureText": "Wann sollte mein Beitragsbild verschwommen sein?",
|
||||||
"languageSelectLabel": "Sprache deines Beitrags",
|
"languageSelectLabel": "Sprache Deines Beitrags",
|
||||||
"languageSelectText": "Sprache wählen",
|
"languageSelectText": "Sprache wählen",
|
||||||
"newPost": "Erstelle einen neuen Beitrag",
|
"newPost": "Erstelle einen neuen Beitrag",
|
||||||
"success": "Gespeichert!",
|
"success": "Gespeichert!",
|
||||||
@ -265,16 +265,16 @@
|
|||||||
"delete": {
|
"delete": {
|
||||||
"cancel": "Abbrechen",
|
"cancel": "Abbrechen",
|
||||||
"comment": {
|
"comment": {
|
||||||
"message": "Bist du sicher, dass du den Kommentar \"<b>{name}</b>\" löschen möchtest?",
|
"message": "Bist Du sicher, dass Du den Kommentar „<b>{name}</b>“ löschen möchtest?",
|
||||||
"success": "Kommentar erfolgreich gelöscht!",
|
"success": "Kommentar erfolgreich gelöscht!",
|
||||||
"title": "Lösche Kommentar",
|
"title": "Lösche Kommentar",
|
||||||
"type": "Comment"
|
"type": "Kommentar"
|
||||||
},
|
},
|
||||||
"contribution": {
|
"contribution": {
|
||||||
"message": "Bist du sicher, dass du den Beitrag \"<b>{name}</b>\" löschen möchtest?",
|
"message": "Bist Du sicher, dass Du den Beitrag „<b>{name}</b>“ löschen möchtest?",
|
||||||
"success": "Beitrag erfolgreich gelöscht!",
|
"success": "Beitrag erfolgreich gelöscht!",
|
||||||
"title": "Lösche Beitrag",
|
"title": "Lösche Beitrag",
|
||||||
"type": "Contribution"
|
"type": "Beitrag"
|
||||||
},
|
},
|
||||||
"submit": "Löschen"
|
"submit": "Löschen"
|
||||||
},
|
},
|
||||||
@ -299,15 +299,15 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"donations": {
|
"donations": {
|
||||||
"amount-of-total": "{amount} von {total} € erreicht",
|
"amount-of-total": "{amount} von {total} € erreicht",
|
||||||
"donate-now": "Jetzt spenden",
|
"donate-now": "Jetzt spenden",
|
||||||
"donations-for": "Spenden für"
|
"donations-for": "Spenden für"
|
||||||
},
|
},
|
||||||
"editor": {
|
"editor": {
|
||||||
"embed": {
|
"embed": {
|
||||||
"always_allow": "Inhalte von Drittanbietern immer anzeigen (diese Einstellung kannst du jederzeit ändern)",
|
"always_allow": "Einzubettende Inhalte von Drittanbietern immer erlauben (diese Einstellung ist jederzeit änderbar)",
|
||||||
"data_privacy_info": "Deine Daten wurden noch nicht an Drittanbieter weitergegeben. Wenn du dieses Video jetzt abspielst, registriert der folgende Anbieter wahrscheinlich deine Nutzerdaten:",
|
"data_privacy_info": "Deine Daten wurden noch nicht an Drittanbieter weitergegeben. Wenn Du dieses Video jetzt abspielst, registriert der folgende Anbieter wahrscheinlich Deine Nutzerdaten:",
|
||||||
"data_privacy_warning": "Achte auf deine Daten!",
|
"data_privacy_warning": "Achte auf Deine Daten!",
|
||||||
"play_now": "Jetzt ansehen"
|
"play_now": "Jetzt ansehen"
|
||||||
},
|
},
|
||||||
"hashtag": {
|
"hashtag": {
|
||||||
@ -357,7 +357,7 @@
|
|||||||
"following": "Folge Ich"
|
"following": "Folge Ich"
|
||||||
},
|
},
|
||||||
"index": {
|
"index": {
|
||||||
"change-filter-settings": "Verändere die Filter-Einstellungen um mehr Ergebnisse zu erhalten.",
|
"change-filter-settings": "Verändere die Filter-Einstellungen, um mehr Ergebnisse zu erhalten.",
|
||||||
"no-results": "Keine Beiträge gefunden."
|
"no-results": "Keine Beiträge gefunden."
|
||||||
},
|
},
|
||||||
"login": {
|
"login": {
|
||||||
@ -377,8 +377,8 @@
|
|||||||
"success": "Du bist eingeloggt!"
|
"success": "Du bist eingeloggt!"
|
||||||
},
|
},
|
||||||
"maintenance": {
|
"maintenance": {
|
||||||
"explanation": "Zurzeit führen wir einige geplante Wartungsarbeiten durch, bitte versuch es später erneut.",
|
"explanation": "Derzeit führen wir einige geplante Wartungsarbeiten durch, bitte versuche es später erneut.",
|
||||||
"questions": "Bei Fragen oder Problemen erreichst du uns per E-Mail an",
|
"questions": "Bei Fragen oder Problemen erreichst Du uns per E-Mail an",
|
||||||
"title": "Human Connection befindet sich in der Wartung"
|
"title": "Human Connection befindet sich in der Wartung"
|
||||||
},
|
},
|
||||||
"moderation": {
|
"moderation": {
|
||||||
@ -392,32 +392,32 @@
|
|||||||
"cancel": "Abbruch",
|
"cancel": "Abbruch",
|
||||||
"Comment": {
|
"Comment": {
|
||||||
"disable": {
|
"disable": {
|
||||||
"message": "Möchtest du den Kommentar \"<b>{name}</b>\" wirklich <b>gesperrt</b> lassen?",
|
"message": "Möchtest Du den Kommentar „<b>{name}</b>“ wirklich <b>gesperrt</b> lassen?",
|
||||||
"title": "Sperre den Kommentar abschließend"
|
"title": "Sperre den Kommentar abschließend"
|
||||||
},
|
},
|
||||||
"enable": {
|
"enable": {
|
||||||
"message": "Möchtest du den Kommentar \"<b>{name}</b>\" wirklich <b>entsperrt</b> lassen?",
|
"message": "Möchtest Du den Kommentar „<b>{name}</b>“ wirklich <b>entsperrt</b> lassen?",
|
||||||
"title": "Entsperre den Kommentar abschließend"
|
"title": "Entsperre den Kommentar abschließend"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Post": {
|
"Post": {
|
||||||
"disable": {
|
"disable": {
|
||||||
"message": "Möchtest du den Beitrag \"<b>{name}</b>\" wirklich <b>gesperrt</b> lassen?",
|
"message": "Möchtest Du den Beitrag „<b>{name}</b>“ wirklich <b>gesperrt</b> lassen?",
|
||||||
"title": "Sperre den Beitrag abschließend"
|
"title": "Sperre den Beitrag abschließend"
|
||||||
},
|
},
|
||||||
"enable": {
|
"enable": {
|
||||||
"message": "Möchtest du den Beitrag \"<b>{name}</b>\" wirklich <b>entsperrt</b> lassen?",
|
"message": "Möchtest Du den Beitrag „<b>{name}</b>“ wirklich <b>entsperrt</b> lassen?",
|
||||||
"title": "Entsperre den Beitrag abschließend"
|
"title": "Entsperre den Beitrag abschließend"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"submit": "Bestätige Entscheidung",
|
"submit": "Bestätige Entscheidung",
|
||||||
"User": {
|
"User": {
|
||||||
"disable": {
|
"disable": {
|
||||||
"message": "Möchtest du den Benutzer \"<b>{name}</b>\" wirklich <b>gesperrt</b> lassen?",
|
"message": "Möchtest Du den Benutzer „<b>{name}</b>“ wirklich <b>gesperrt</b> lassen?",
|
||||||
"title": "Sperre den Benutzer abschließend"
|
"title": "Sperre den Benutzer abschließend"
|
||||||
},
|
},
|
||||||
"enable": {
|
"enable": {
|
||||||
"message": "Möchtest du den Benutzer \"<b>{name}</b>\" wirklich <b>entsperrt</b> lassen?",
|
"message": "Möchtest Du den Benutzer „<b>{name}</b>“ wirklich <b>entsperrt</b> lassen?",
|
||||||
"title": "Entsperre den Benutzer abschließend"
|
"title": "Entsperre den Benutzer abschließend"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -461,9 +461,9 @@
|
|||||||
"pageLink": "Alle Benachrichtigungen",
|
"pageLink": "Alle Benachrichtigungen",
|
||||||
"post": "Beitrag",
|
"post": "Beitrag",
|
||||||
"reason": {
|
"reason": {
|
||||||
"commented_on_post": "Hat deinen Beitrag kommentiert …",
|
"commented_on_post": "Hat Deinen Beitrag kommentiert …",
|
||||||
"mentioned_in_comment": "Hat dich in einem Kommentar erwähnt …",
|
"mentioned_in_comment": "Hat Dich in einem Kommentar erwähnt …",
|
||||||
"mentioned_in_post": "Hat dich in einem Beitrag erwähnt …"
|
"mentioned_in_post": "Hat Dich in einem Beitrag erwähnt …"
|
||||||
},
|
},
|
||||||
"title": "Benachrichtigungen",
|
"title": "Benachrichtigungen",
|
||||||
"user": "Benutzer"
|
"user": "Benutzer"
|
||||||
@ -472,20 +472,20 @@
|
|||||||
"comment": {
|
"comment": {
|
||||||
"reply": "Antworten",
|
"reply": "Antworten",
|
||||||
"submit": "Kommentiere",
|
"submit": "Kommentiere",
|
||||||
"submitted": "Kommentar gesendet!",
|
"submitted": "Kommentar gesendet",
|
||||||
"updated": "Änderungen gespeichert"
|
"updated": "Änderungen gespeichert"
|
||||||
},
|
},
|
||||||
"edited": "bearbeitet",
|
"edited": "bearbeitet",
|
||||||
"menu": {
|
"menu": {
|
||||||
"delete": "Beitrag löschen",
|
"delete": "Beitrag löschen",
|
||||||
"edit": "Beitrag bearbeiten",
|
"edit": "Beitrag bearbeiten",
|
||||||
"pin": "Post festpinnen",
|
"pin": "Beitrag anheften",
|
||||||
"pinnedSuccessfully": "Post erfolgreich festgepinnt!",
|
"pinnedSuccessfully": "Beitrag erfolgreich angeheftet!",
|
||||||
"unpin": "Post nicht mehr festpinnen",
|
"unpin": "Beitrag loslösen",
|
||||||
"unpinnedSuccessfully": "Post erfolgreich nicht mehr festgepinnt!"
|
"unpinnedSuccessfully": "Angehefteten Beitrag erfolgreich losgelöst!"
|
||||||
},
|
},
|
||||||
"moreInfo": {
|
"moreInfo": {
|
||||||
"description": "Hier findest du weitere Infos zum Thema.",
|
"description": "Hier findest Du weitere Infos zum Thema.",
|
||||||
"name": "Mehr Info",
|
"name": "Mehr Info",
|
||||||
"title": "Mehr Informationen",
|
"title": "Mehr Informationen",
|
||||||
"titleOfCategoriesSection": "Kategorien",
|
"titleOfCategoriesSection": "Kategorien",
|
||||||
@ -531,22 +531,22 @@
|
|||||||
"release": {
|
"release": {
|
||||||
"cancel": "Abbrechen",
|
"cancel": "Abbrechen",
|
||||||
"comment": {
|
"comment": {
|
||||||
"error": "Den Kommentar hast du schon gemeldet!",
|
"error": "Den Kommentar hast Du schon gemeldet!",
|
||||||
"message": "Bist du sicher, dass du den Kommentar \"<b>{name}</b>\" freigeben möchtest?",
|
"message": "Bist Du sicher, dass Du den Kommentar „<b>{name}</b>“ freigeben möchtest?",
|
||||||
"title": "Kommentar freigeben",
|
"title": "Kommentar freigeben",
|
||||||
"type": "Kommentar"
|
"type": "Kommentar"
|
||||||
},
|
},
|
||||||
"contribution": {
|
"contribution": {
|
||||||
"error": "Den Beitrag hast du schon gemeldet!",
|
"error": "Den Beitrag hast Du schon gemeldet!",
|
||||||
"message": "Bist du sicher, dass du den Beitrag \"<b>{name}</b>\" freigeben möchtest?",
|
"message": "Bist Du sicher, dass Du den Beitrag „<b>{name}</b>“ freigeben möchtest?",
|
||||||
"title": "Beitrag freigeben",
|
"title": "Beitrag freigeben",
|
||||||
"type": "Beitrag"
|
"type": "Beitrag"
|
||||||
},
|
},
|
||||||
"submit": "freigeben",
|
"submit": "freigeben",
|
||||||
"success": "Erfolgreich freigegeben!",
|
"success": "Erfolgreich freigegeben!",
|
||||||
"user": {
|
"user": {
|
||||||
"error": "Den User hast du schon gemeldet!",
|
"error": "Den Benutzer hast Du schon gemeldet!",
|
||||||
"message": "Bist du sicher, dass du den Nutzer \"<b>{name}</b>\" freigeben möchtest?",
|
"message": "Bist Du sicher, dass Du den Nutzer „<b>{name}</b>“ freigeben möchtest?",
|
||||||
"title": "Nutzer freigeben",
|
"title": "Nutzer freigeben",
|
||||||
"type": "Nutzer"
|
"type": "Nutzer"
|
||||||
}
|
}
|
||||||
@ -573,16 +573,16 @@
|
|||||||
"advert_products_services_commercial": "Bewerben von Produkten und Dienstleistungen mit kommerzieller Absicht.",
|
"advert_products_services_commercial": "Bewerben von Produkten und Dienstleistungen mit kommerzieller Absicht.",
|
||||||
"criminal_behavior_violation_german_law": "Strafbares Verhalten bzw. Verstoß gegen deutsches Recht.",
|
"criminal_behavior_violation_german_law": "Strafbares Verhalten bzw. Verstoß gegen deutsches Recht.",
|
||||||
"discrimination_etc": "Diskriminierende Beiträge, Kommentare, Äußerungen oder Beleidigungen.",
|
"discrimination_etc": "Diskriminierende Beiträge, Kommentare, Äußerungen oder Beleidigungen.",
|
||||||
"doxing": "Das Veröffentlichen von personenbezogenen Daten anderer ohne deren Einverständnis oder das Androhen dessen (\"Doxing\").",
|
"doxing": "Das Veröffentlichen von personenbezogenen Daten anderer ohne deren Einverständnis oder das Androhen dessen („Doxing“).",
|
||||||
"glorific_trivia_of_cruel_inhuman_acts": "Verherrlichung oder Verharmlosung grausamer oder unmenschlicher Gewalttätigkeiten.",
|
"glorific_trivia_of_cruel_inhuman_acts": "Verherrlichung oder Verharmlosung grausamer oder unmenschlicher Gewalttätigkeiten.",
|
||||||
"intentional_intimidation_stalking_persecution": "Absichtliche Einschüchterung, Stalking oder Verfolgung.",
|
"intentional_intimidation_stalking_persecution": "Absichtliche Einschüchterung, Stalking oder Verfolgung.",
|
||||||
"other": "Andere …",
|
"other": "Andere …",
|
||||||
"pornographic_content_links": "Das Posten oder Verlinken eindeutig pornografischen Materials."
|
"pornographic_content_links": "Das Senden oder Verlinken eindeutig pornografischen Materials."
|
||||||
},
|
},
|
||||||
"placeholder": "Kategorie …"
|
"placeholder": "Kategorie …"
|
||||||
},
|
},
|
||||||
"description": {
|
"description": {
|
||||||
"label": "Bitte erkläre: Warum möchtest du dies melden?",
|
"label": "Bitte erkläre: Warum möchtest Du dies melden?",
|
||||||
"placeholder": "Zusätzliche Information …"
|
"placeholder": "Zusätzliche Information …"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -612,19 +612,19 @@
|
|||||||
"slug": "Alias",
|
"slug": "Alias",
|
||||||
"unblock": "Entsperren"
|
"unblock": "Entsperren"
|
||||||
},
|
},
|
||||||
"empty": "Bislang hast du niemanden blockiert.",
|
"empty": "Bislang hast Du niemanden blockiert.",
|
||||||
"explanation": {
|
"explanation": {
|
||||||
"closing": "Das sollte fürs Erste genügen, damit blockierte Benutzer dich nicht mehr länger belästigen können.",
|
"closing": "Das sollte fürs Erste genügen, damit blockierte Benutzer Dich nicht mehr länger belästigen können.",
|
||||||
"commenting-disabled": "Du kannst den Beitrag derzeit nicht kommentieren.",
|
"commenting-disabled": "Du kannst den Beitrag derzeit nicht kommentieren.",
|
||||||
"commenting-explanation": "Dafür kann es mehrere Gründe geben, bitte schau in unsere ",
|
"commenting-explanation": "Dafür kann es mehrere Gründe geben, bitte schau in unsere ",
|
||||||
"intro": "Wenn ein anderer Benutzer von dir blockiert wurde, dann passiert folgendes:",
|
"intro": "Wenn ein anderer Benutzer durch Dich blockiert wurde, dann passiert Folgendes:",
|
||||||
"notifications": "Von dir blockierte Personen erhalten keine Benachrichtigungen mehr, wenn sie in deinen Beiträgen erwähnt werden.",
|
"notifications": "Von Dir blockierte Benutzer werden keine Benachrichtigungen mehr erhalten, falls sie in Deinen Beiträgen erwähnt werden.",
|
||||||
"their-perspective": "Die blockierte Person kann deine Beiträge nicht mehr kommentieren",
|
"their-perspective": "Umgekehrt das gleiche: Die blockierte Person bekommt auch in ihren Benachrichtigungen Deine Beiträge nicht mehr zu sehen.",
|
||||||
"your-perspective": "Du kannst keine Beiträge der blockierten Person mehr kommentieren."
|
"your-perspective": "In Deinen Benachrichtigungen tauchen keine Beiträge der blockierten Person mehr auf."
|
||||||
},
|
},
|
||||||
"how-to": "Du kannst andere Benutzer auf deren Profilseite über das Inhaltsmenü blockieren.",
|
"how-to": "Du kannst andere Benutzer auf deren Profilseite über das Inhaltsmenü blockieren.",
|
||||||
"name": "Blocked users",
|
"name": "Blockierte Benutzer",
|
||||||
"unblock": "Nutzer entsperren",
|
"unblock": "Blockierten Nutzer freigeben",
|
||||||
"unblocked": "{name} ist wieder entsperrt"
|
"unblocked": "{name} ist wieder entsperrt"
|
||||||
},
|
},
|
||||||
"data": {
|
"data": {
|
||||||
@ -649,36 +649,36 @@
|
|||||||
"name": "Daten herunterladen"
|
"name": "Daten herunterladen"
|
||||||
},
|
},
|
||||||
"email": {
|
"email": {
|
||||||
"change-successful": "Deine E-Mail Adresse wurde erfolgreich geändert.",
|
"change-successful": "Deine E-Mail-Adresse wurde erfolgreich geändert.",
|
||||||
"labelEmail": "E-Mail Adresse ändern",
|
"labelEmail": "E-Mail-Adresse ändern",
|
||||||
"labelNewEmail": "Neue E-Mail Adresse",
|
"labelNewEmail": "Neue E-Mail-Adresse",
|
||||||
"labelNonce": "Bestätigungscode eingeben",
|
"labelNonce": "Bestätigungscode eingeben",
|
||||||
"name": "Deine E-Mail",
|
"name": "Deine E-Mail",
|
||||||
"submitted": "Eine E-Mail zur Bestätigung deiner Adresse wurde an <b>{email}</b> gesendet.",
|
"submitted": "Eine E-Mail zur Bestätigung Deiner Adresse wurde an <b>{email}</b> gesendet.",
|
||||||
"success": "Eine neue E-Mail Addresse wurde registriert.",
|
"success": "Eine neue E-Mail-Adresse wurde registriert.",
|
||||||
"validation": {
|
"validation": {
|
||||||
"same-email": "Das ist deine aktuelle E-Mail Addresse"
|
"same-email": "Das ist Deine aktuelle E-Mail-Adresse"
|
||||||
},
|
},
|
||||||
"verification-error": {
|
"verification-error": {
|
||||||
"explanation": "Das kann verschiedene Ursachen haben:",
|
"explanation": "Das kann verschiedene Ursachen haben:",
|
||||||
"message": "Deine E-Mail Adresse konnte nicht verifiziert werden.",
|
"message": "Deine E-Mail-Adresse konnte nicht verifiziert werden.",
|
||||||
"reason": {
|
"reason": {
|
||||||
"invalid-nonce": "Ist der Bestätigungscode falsch?",
|
"invalid-nonce": "Ist der Bestätigungscode falsch?",
|
||||||
"no-email-request": "Bist du dir sicher, dass du eine Änderung deiner E-Mail Adresse angefragt hattest?"
|
"no-email-request": "Bist Du Dir sicher, dass Du eine Änderung Deiner E-Mail-Adresse angefragt hattest?"
|
||||||
},
|
},
|
||||||
"support": "Wenn das Problem weiterhin besteht, kontaktiere uns gerne per E-Mail an"
|
"support": "Wenn das Problem weiterhin besteht, kontaktiere uns gerne per E-Mail an"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"embeds": {
|
"embeds": {
|
||||||
"info-description": "Hier ist die Liste an Drittanbietern, deren Inhalte als Fremdcode z.B. in Form von eingebetteten Videos angezeigt werden kann:",
|
"info-description": "Hier ist die Liste der Drittanbieter, deren Inhalte, z.B. in Form eingebetteter Videos, mittels Drittanbieter-Programmcode angezeigt werden kann:",
|
||||||
"name": "Drittanbieter",
|
"name": "Drittanbieter",
|
||||||
"status": {
|
"status": {
|
||||||
"change": {
|
"change": {
|
||||||
"allow": "Na klar",
|
"allow": "Na klar",
|
||||||
"deny": "Lieber nicht",
|
"deny": "Lieber nicht",
|
||||||
"question": "Soll eingebetter Fremdcode von Dritten für dich immer angezeigt werden?"
|
"question": "Soll einzubettender Programmcode der Drittanbieter Dir immer zur Anzeige gebracht werden?"
|
||||||
},
|
},
|
||||||
"description": "Als Grundeinstellung für dich wird eingebetter Fremdcode von Drittanbietern",
|
"description": "Als Grundeinstellung wird Dir der einzubettende Code der Drittanbieter",
|
||||||
"disabled": {
|
"disabled": {
|
||||||
"off": "zunächst nicht angezeigt",
|
"off": "zunächst nicht angezeigt",
|
||||||
"on": "sofort angezeigt"
|
"on": "sofort angezeigt"
|
||||||
@ -724,10 +724,10 @@
|
|||||||
"label-new-password": "Dein neues Passwort",
|
"label-new-password": "Dein neues Passwort",
|
||||||
"label-new-password-confirm": "Bestätige Dein neues Passwort",
|
"label-new-password-confirm": "Bestätige Dein neues Passwort",
|
||||||
"label-old-password": "Dein altes Passwort",
|
"label-old-password": "Dein altes Passwort",
|
||||||
"message-new-password-confirm-required": "Bestätige dein neues Passwort",
|
"message-new-password-confirm-required": "Bestätige Dein neues Passwort",
|
||||||
"message-new-password-missmatch": "Gebe das gleiche Passwort nochmals ein",
|
"message-new-password-missmatch": "Gib dasselbe Passwort nochmals ein",
|
||||||
"message-new-password-required": "Gebe ein neues Passwort ein",
|
"message-new-password-required": "Gib ein neues Passwort ein",
|
||||||
"message-old-password-required": "Gebe dein altes Passwort ein",
|
"message-old-password-required": "Gib Dein altes Passwort ein",
|
||||||
"passwordSecurity": "Passwortsicherheit",
|
"passwordSecurity": "Passwortsicherheit",
|
||||||
"passwordStrength0": "Sehr unsicheres Passwort",
|
"passwordStrength0": "Sehr unsicheres Passwort",
|
||||||
"passwordStrength1": "Unsicheres Passwort",
|
"passwordStrength1": "Unsicheres Passwort",
|
||||||
@ -739,12 +739,12 @@
|
|||||||
"name": "Sicherheit"
|
"name": "Sicherheit"
|
||||||
},
|
},
|
||||||
"social-media": {
|
"social-media": {
|
||||||
"name": "Soziale Medien",
|
"name": "Soziale Netzwerke",
|
||||||
"placeholder": "Deine Social-Media URL",
|
"placeholder": "Deine Webadresse des Sozialen Netzwerkes",
|
||||||
"requireUnique": "Dieser Link existiert bereits",
|
"requireUnique": "Dieser Link existiert bereits",
|
||||||
"submit": "Link hinzufügen",
|
"submit": "Link hinzufügen",
|
||||||
"successAdd": "Social-Media hinzugefügt. Profil aktualisiert!",
|
"successAdd": "Soziales Netzwerk hinzugefügt. Profil wurde aktualisiert!",
|
||||||
"successDelete": "Social-Media gelöscht. Profil aktualisiert!"
|
"successDelete": "Soziales Netzwerk entfernt. Profil wurde aktualisiert!"
|
||||||
},
|
},
|
||||||
"validation": {
|
"validation": {
|
||||||
"slug": {
|
"slug": {
|
||||||
@ -769,7 +769,7 @@
|
|||||||
"imprint": "Impressum",
|
"imprint": "Impressum",
|
||||||
"made": "Mit ❤ gemacht",
|
"made": "Mit ❤ gemacht",
|
||||||
"register": "Registernummer",
|
"register": "Registernummer",
|
||||||
"responsible": "Verantwortlicher gemäß § 55 Abs. 2 RStV ",
|
"responsible": "Verantwortlich für Inhalte dieser Seite (§ 55 Abs. 2 RStV)",
|
||||||
"taxident": "Umsatzsteuer-Identifikationsnummer gemäß § 27 a Umsatzsteuergesetz (Deutschland)",
|
"taxident": "Umsatzsteuer-Identifikationsnummer gemäß § 27 a Umsatzsteuergesetz (Deutschland)",
|
||||||
"termsAndConditions": "Nutzungsbedingungen",
|
"termsAndConditions": "Nutzungsbedingungen",
|
||||||
"thanks": "Danke!",
|
"thanks": "Danke!",
|
||||||
@ -790,11 +790,11 @@
|
|||||||
"termsAndConditions": {
|
"termsAndConditions": {
|
||||||
"addition": {
|
"addition": {
|
||||||
"description": "<a href=\"https://human-connection.org/veranstaltungen/\" target=\"_blank\" > https://human-connection.org/veranstaltungen/ </a>",
|
"description": "<a href=\"https://human-connection.org/veranstaltungen/\" target=\"_blank\" > https://human-connection.org/veranstaltungen/ </a>",
|
||||||
"title": "Zusätzlich machen wir regelmäßig Veranstaltungen, wo Du auch Eindrücke wiedergeben und Fragen stellen kannst. Du findest eine aktuelle Übersicht hier:"
|
"title": "Zusätzlich veranstalten wir regelmäßig Ereignisse, wo Du auch Eindrücke teilen und Fragen stellen kannst. Du findest eine aktuelle Übersicht hier:"
|
||||||
},
|
},
|
||||||
"agree": "Ich stimme zu!",
|
"agree": "Ich stimme zu!",
|
||||||
"code-of-conduct": {
|
"code-of-conduct": {
|
||||||
"description": "Unser Verhaltenskodex dient als Leitfaden für das persönliche Auftreten und den Umgang miteinander. Wer als Nutzer im Human Connection-Netzwerk aktiv ist, Beiträge verfasst, kommentiert oder mit anderen Nutzern, auch außerhalb des Netzwerkes, Kontakt aufnimmt, erkennt diese Verhaltensregeln als verbindlich an. <a href=\"https://alpha.human-connection.org/code-of-conduct\" target=\"_blank\"> https://alpha.human-connection.org/code-of-conduct</a>",
|
"description": "Unser Verhaltenskodex dient als Leitfaden für das persönliche Auftreten und den Umgang miteinander. Wer als Nutzer im Human Connection-Netzwerk aktiv ist, Beiträge verfasst, kommentiert oder mit anderen Nutzern, auch außerhalb des Netzwerkes, Kontakt aufnimmt, erkennt diese Verhaltensregeln als verbindlich an. <a href=\"https://alpha.human-connection.org/code-of-conduct\" target=\"_blank\">https://alpha.human-connection.org/code-of-conduct</a>",
|
||||||
"title": "Verhaltenscodex"
|
"title": "Verhaltenscodex"
|
||||||
},
|
},
|
||||||
"errors-and-feedback": {
|
"errors-and-feedback": {
|
||||||
@ -802,7 +802,7 @@
|
|||||||
"title": "Fehler und Rückmeldungen"
|
"title": "Fehler und Rückmeldungen"
|
||||||
},
|
},
|
||||||
"help-and-questions": {
|
"help-and-questions": {
|
||||||
"description": "Für Hilfe und Fragen haben wir Dir eine umfassende Sammlung an häufig gestellten Fragen und Antworten (FAQ) zusammengestellt. Du findest diese hier: <a href=\"https://support.human-connection.org/kb/\" target=\"_blank\" > https://support.human-connection.org/kb/ </a>",
|
"description": "Für Hilfe und Fragen haben wir Dir eine umfassende Sammlung an häufig gestellten Fragen und Antworten (FAQ) zusammengestellt; Du findest diese auf <a href=\"https://support.human-connection.org/kb/\" target=\"_blank\" > support.human-connection.org/kb/ </a>",
|
||||||
"title": "Hilfe und Fragen"
|
"title": "Hilfe und Fragen"
|
||||||
},
|
},
|
||||||
"moderation": {
|
"moderation": {
|
||||||
@ -811,11 +811,11 @@
|
|||||||
},
|
},
|
||||||
"newTermsAndConditions": "Neue Nutzungsbedingungen",
|
"newTermsAndConditions": "Neue Nutzungsbedingungen",
|
||||||
"no-commercial-use": {
|
"no-commercial-use": {
|
||||||
"description": "Die Nutzung des Human Connection Netzwerkes ist nicht gestattet für kommerzielle Nutzung. Darunter fällt unter anderem das Bewerben von Produkten mit kommerzieller Absicht, das Einstellen von Affiliate-Links, direkter Aufruf zu Spenden oder finanzieller Unterstützung für Zwecke, die steuerlich nicht als gemeinnützig anerkannt sind.",
|
"description": "Die Nutzung des Human Connection Netzwerkes ist nicht gestattet für kommerzielle Nutzung. Darunter fällt unter anderem das Bewerben von Produkten mit kommerzieller Absicht, das Einstellen von Affiliate-Links (Geschäftspartner-Links), direkter Aufruf zu Spenden oder finanzieller Unterstützung für Zwecke, die steuerlich nicht als gemeinnützig anerkannt sind.",
|
||||||
"title": "Keine kommerzielle Nutzung"
|
"title": "Keine kommerzielle Nutzung"
|
||||||
},
|
},
|
||||||
"privacy-statement": {
|
"privacy-statement": {
|
||||||
"description": "Unser Netzwerk ist ein soziales Wissens- und Aktionsnetzwerk. Daher ist es uns besonders wichtig, dass möglichst viele Inhalte öffentlich zugänglich sind. Im Laufe der Entwicklung unseres Netzwerkes wird es mehr und mehr die Möglichkeit geben, über die Sichtbarkeit der selbst angegebenen bzw. persönlichen Daten zu entscheiden. Über diese neuen Funktionen werden wir Euch informieren. Ansonsten gilt, dass Du immer darüber nachdenken solltest, welche persönlichen Daten Du über Dich (oder andere) preisgibst. Dies gilt insbesondere für Inhalte von Beiträgen und Kommentaren, da diese einen weitgehend öffentlichen Charakter haben. Später wird es Möglichkeiten geben, die Sichtbarkeit Deines Profils einzuschränken. Teil der Nutzungsbedingungen ist unsere Datenschutzerklärung, die Dich über die einzelnen Datenverarbeitungen in unserem Netzwerk informiert: <a href=\"https://human-connection.org/datenschutz/#netzwerk\" target=\"_blank\"> https://human-connection.org/datenschutz/#netzwerk</a> bzw. <a href=\"https://human-connection.org/datenschutz/\" target=\"_blank\">https://human-connection.org/datenschutz/</a> Unsere Datenschutzerklärung ist an die Gesetzeslage und die Charakteristika unseres Netzwerks angepasst und gilt immer in der aktuellsten Version.",
|
"description": "Unser Netzwerk ist ein soziales Wissens- und Aktionsnetzwerk. Daher ist es uns besonders wichtig, dass möglichst viele Inhalte öffentlich zugänglich sind. Im Laufe der Entwicklung unseres Netzwerkes wird es mehr und mehr die Möglichkeit geben, über die Sichtbarkeit der selbst angegebenen bzw. persönlichen Daten zu entscheiden. Über diese neuen Funktionen werden wir Euch informieren. Ansonsten gilt, dass Du immer darüber nachdenken solltest, welche persönlichen Daten Du über Dich (oder andere) preisgibst. Dies gilt insbesondere für Inhalte von Beiträgen und Kommentaren, da diese einen weitgehend öffentlichen Charakter haben. Später wird es Möglichkeiten geben, die Sichtbarkeit Deines Profils einzuschränken. Teil der Nutzungsbedingungen ist unsere Datenschutzerklärung, die Dich über die einzelnen Datenverarbeitungen in unserem Netzwerk informiert: <a href=\"https://human-connection.org/datenschutz/#netzwerk\" target=\"_blank\">https://human-connection.org/datenschutz/#netzwerk</a> bzw. <a href=\"https://human-connection.org/datenschutz/\" target=\"_blank\">https://human-connection.org/datenschutz/</a>. Unsere Datenschutzerklärung ist an die Gesetzeslage und die Charakteristika unseres Netzwerks angepasst und gilt immer in der aktuellsten Version.",
|
||||||
"title": "Datenschutz"
|
"title": "Datenschutz"
|
||||||
},
|
},
|
||||||
"terms-of-service": {
|
"terms-of-service": {
|
||||||
@ -824,7 +824,7 @@
|
|||||||
},
|
},
|
||||||
"termsAndConditionsConfirmed": "Ich habe die <a href=\"/terms-and-conditions\" target=\"_blank\">Nutzungsbedingungen</a> durchgelesen und stimme ihnen zu.",
|
"termsAndConditionsConfirmed": "Ich habe die <a href=\"/terms-and-conditions\" target=\"_blank\">Nutzungsbedingungen</a> durchgelesen und stimme ihnen zu.",
|
||||||
"termsAndConditionsNewConfirm": "Ich habe die neuen Nutzungsbedingungen durchgelesen und stimme zu.",
|
"termsAndConditionsNewConfirm": "Ich habe die neuen Nutzungsbedingungen durchgelesen und stimme zu.",
|
||||||
"termsAndConditionsNewConfirmText": "Bitte lies Dir die neue Nutzungsbedingungen jetzt durch!",
|
"termsAndConditionsNewConfirmText": "Bitte lies Dir die neuen Nutzungsbedingungen jetzt durch!",
|
||||||
"use-and-license": {
|
"use-and-license": {
|
||||||
"description": "Sind Inhalte, die Du bei uns einstellst, durch Rechte am geistigen Eigentum geschützt, erteilst Du uns eine nicht-exklusive, übertragbare, unterlizenzierbare und weltweite Lizenz für die Nutzung dieser Inhalte für die Bereitstellung in unserem Netzwerk. Diese Lizenz endet, sobald Du Deine Inhalte oder Deinen ganzen Account löscht. Bedenke, dass andere Deine Inhalte weiter teilen können und wir diese nicht löschen können.",
|
"description": "Sind Inhalte, die Du bei uns einstellst, durch Rechte am geistigen Eigentum geschützt, erteilst Du uns eine nicht-exklusive, übertragbare, unterlizenzierbare und weltweite Lizenz für die Nutzung dieser Inhalte für die Bereitstellung in unserem Netzwerk. Diese Lizenz endet, sobald Du Deine Inhalte oder Deinen ganzen Account löscht. Bedenke, dass andere Deine Inhalte weiter teilen können und wir diese nicht löschen können.",
|
||||||
"title": "Nutzung und Lizenz"
|
"title": "Nutzung und Lizenz"
|
||||||
@ -832,7 +832,7 @@
|
|||||||
},
|
},
|
||||||
"user": {
|
"user": {
|
||||||
"avatar": {
|
"avatar": {
|
||||||
"submitted": "Upload erfolgreich"
|
"submitted": "Erfolgreich hochgeladen!"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -63,7 +63,7 @@
|
|||||||
"@nuxtjs/axios": "~5.9.5",
|
"@nuxtjs/axios": "~5.9.5",
|
||||||
"@nuxtjs/dotenv": "~1.4.1",
|
"@nuxtjs/dotenv": "~1.4.1",
|
||||||
"@nuxtjs/pwa": "^3.0.0-beta.20",
|
"@nuxtjs/pwa": "^3.0.0-beta.20",
|
||||||
"@nuxtjs/sentry": "^3.2.3",
|
"@nuxtjs/sentry": "^3.2.4",
|
||||||
"@nuxtjs/style-resources": "~1.0.0",
|
"@nuxtjs/style-resources": "~1.0.0",
|
||||||
"accounting": "~0.4.1",
|
"accounting": "~0.4.1",
|
||||||
"apollo-cache-inmemory": "~1.6.5",
|
"apollo-cache-inmemory": "~1.6.5",
|
||||||
@ -122,7 +122,7 @@
|
|||||||
"eslint-config-standard": "~14.1.0",
|
"eslint-config-standard": "~14.1.0",
|
||||||
"eslint-loader": "~3.0.3",
|
"eslint-loader": "~3.0.3",
|
||||||
"eslint-plugin-import": "~2.20.1",
|
"eslint-plugin-import": "~2.20.1",
|
||||||
"eslint-plugin-jest": "~23.6.0",
|
"eslint-plugin-jest": "~23.7.0",
|
||||||
"eslint-plugin-node": "~11.0.0",
|
"eslint-plugin-node": "~11.0.0",
|
||||||
"eslint-plugin-prettier": "~3.1.2",
|
"eslint-plugin-prettier": "~3.1.2",
|
||||||
"eslint-plugin-promise": "~4.2.1",
|
"eslint-plugin-promise": "~4.2.1",
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
import { config, mount } from '@vue/test-utils'
|
import { config, mount } from '@vue/test-utils'
|
||||||
import Vuex from 'vuex'
|
import Vuex from 'vuex'
|
||||||
|
import Vue from 'vue'
|
||||||
import PostSlug from './index.vue'
|
import PostSlug from './index.vue'
|
||||||
import CommentList from '~/components/CommentList/CommentList'
|
import CommentList from '~/components/CommentList/CommentList'
|
||||||
|
|
||||||
@ -11,85 +12,103 @@ const localVue = global.localVue
|
|||||||
localVue.directive('scrollTo', jest.fn())
|
localVue.directive('scrollTo', jest.fn())
|
||||||
|
|
||||||
describe('PostSlug', () => {
|
describe('PostSlug', () => {
|
||||||
let store, propsData, mocks, stubs, wrapper, Wrapper
|
let wrapper, Wrapper, backendData, mocks, stubs
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
store = new Vuex.Store({
|
const author = { id: '1stUser', slug: '1st-user' }
|
||||||
getters: {
|
backendData = {
|
||||||
'auth/user': () => {
|
|
||||||
return { id: '1stUser' }
|
|
||||||
},
|
|
||||||
'auth/isModerator': () => false,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
propsData = {}
|
|
||||||
mocks = {
|
|
||||||
$t: jest.fn(),
|
|
||||||
$filters: {
|
|
||||||
truncate: a => a,
|
|
||||||
removeHtml: a => a,
|
|
||||||
},
|
|
||||||
$route: {
|
|
||||||
hash: '',
|
|
||||||
},
|
|
||||||
// If you are mocking the router, then don't use VueRouter with localVue: https://vue-test-utils.vuejs.org/guides/using-with-vue-router.html
|
|
||||||
$router: {
|
|
||||||
history: {
|
|
||||||
push: jest.fn(),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
$toast: {
|
|
||||||
success: jest.fn(),
|
|
||||||
error: jest.fn(),
|
|
||||||
},
|
|
||||||
$apollo: {
|
|
||||||
mutate: jest.fn().mockResolvedValue(),
|
|
||||||
query: jest.fn().mockResolvedValue({ data: { PostEmotionsCountByEmotion: {} } }),
|
|
||||||
},
|
|
||||||
$scrollTo: jest.fn(),
|
|
||||||
}
|
|
||||||
stubs = {
|
|
||||||
HcEditor: { render: () => {}, methods: { insertReply: jest.fn(() => null) } },
|
|
||||||
ContentViewer: true,
|
|
||||||
}
|
|
||||||
jest.useFakeTimers()
|
|
||||||
wrapper = Wrapper()
|
|
||||||
wrapper.setData({
|
|
||||||
post: {
|
post: {
|
||||||
id: '1',
|
id: '1',
|
||||||
author: {
|
author,
|
||||||
id: '1stUser',
|
|
||||||
},
|
|
||||||
comments: [
|
comments: [
|
||||||
{
|
{
|
||||||
id: 'comment134',
|
id: 'comment134',
|
||||||
contentExcerpt: 'this is a comment',
|
contentExcerpt: 'this is a comment',
|
||||||
content: 'this is a comment',
|
content: 'this is a comment',
|
||||||
author: {
|
author,
|
||||||
id: '1stUser',
|
|
||||||
slug: '1st-user',
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
ready: true,
|
ready: true,
|
||||||
})
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
describe('mount', () => {
|
describe('mount', () => {
|
||||||
Wrapper = () => {
|
Wrapper = async (opts = {}) => {
|
||||||
return mount(PostSlug, {
|
jest.useFakeTimers()
|
||||||
|
const store = new Vuex.Store({
|
||||||
|
getters: {
|
||||||
|
'auth/user': () => {
|
||||||
|
return { id: '1stUser' }
|
||||||
|
},
|
||||||
|
'auth/isModerator': () => false,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
const propsData = {}
|
||||||
|
mocks = {
|
||||||
|
$t: jest.fn(),
|
||||||
|
$filters: {
|
||||||
|
truncate: a => a,
|
||||||
|
removeHtml: a => a,
|
||||||
|
},
|
||||||
|
$route: {
|
||||||
|
hash: '',
|
||||||
|
},
|
||||||
|
// If you are mocking the router, then don't use VueRouter with localVue: https://vue-test-utils.vuejs.org/guides/using-with-vue-router.html
|
||||||
|
$router: {
|
||||||
|
history: {
|
||||||
|
push: jest.fn(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
$toast: {
|
||||||
|
success: jest.fn(),
|
||||||
|
error: jest.fn(),
|
||||||
|
},
|
||||||
|
$apollo: {
|
||||||
|
mutate: jest.fn().mockResolvedValue(),
|
||||||
|
query: jest.fn().mockResolvedValue({ data: { PostEmotionsCountByEmotion: {} } }),
|
||||||
|
},
|
||||||
|
$scrollTo: jest.fn(),
|
||||||
|
}
|
||||||
|
stubs = {
|
||||||
|
HcEditor: { render: () => {}, methods: { insertReply: jest.fn(() => null) } },
|
||||||
|
ContentViewer: true,
|
||||||
|
}
|
||||||
|
const defaults = {
|
||||||
store,
|
store,
|
||||||
mocks,
|
mocks,
|
||||||
localVue,
|
localVue,
|
||||||
propsData,
|
propsData,
|
||||||
stubs,
|
stubs,
|
||||||
|
}
|
||||||
|
const wrapper = mount(PostSlug, {
|
||||||
|
...defaults,
|
||||||
|
...opts,
|
||||||
})
|
})
|
||||||
|
wrapper.setData(backendData)
|
||||||
|
await Vue.nextTick()
|
||||||
|
return wrapper
|
||||||
}
|
}
|
||||||
|
|
||||||
|
describe('given author is `null`', () => {
|
||||||
|
it('does not crash', async () => {
|
||||||
|
backendData = {
|
||||||
|
post: {
|
||||||
|
id: '1',
|
||||||
|
author: null,
|
||||||
|
comments: [],
|
||||||
|
},
|
||||||
|
ready: true,
|
||||||
|
}
|
||||||
|
wrapper = await Wrapper()
|
||||||
|
expect(wrapper.find('.info.anonymous').exists()).toBe(true)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
describe('test Post callbacks', () => {
|
describe('test Post callbacks', () => {
|
||||||
describe('deletion of Post from Page by invoking "deletePostCallback()"', () => {
|
describe('deletion of Post from Page by invoking "deletePostCallback()"', () => {
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
|
wrapper = await Wrapper()
|
||||||
await wrapper.vm.deletePostCallback()
|
await wrapper.vm.deletePostCallback()
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -113,6 +132,7 @@ describe('PostSlug', () => {
|
|||||||
|
|
||||||
describe('reply method called when emitted reply received', () => {
|
describe('reply method called when emitted reply received', () => {
|
||||||
it('CommentList', async () => {
|
it('CommentList', async () => {
|
||||||
|
wrapper = await Wrapper()
|
||||||
wrapper.find(CommentList).vm.$emit('reply', {
|
wrapper.find(CommentList).vm.$emit('reply', {
|
||||||
id: 'commentAuthorId',
|
id: 'commentAuthorId',
|
||||||
slug: 'ogerly',
|
slug: 'ogerly',
|
||||||
|
|||||||
@ -33,7 +33,7 @@
|
|||||||
resource-type="contribution"
|
resource-type="contribution"
|
||||||
:resource="post"
|
:resource="post"
|
||||||
:modalsData="menuModalsData"
|
:modalsData="menuModalsData"
|
||||||
:is-owner="isAuthor(post.author ? post.author.id : null)"
|
:is-owner="isAuthor"
|
||||||
@pinPost="pinPost"
|
@pinPost="pinPost"
|
||||||
@unpinPost="unpinPost"
|
@unpinPost="unpinPost"
|
||||||
/>
|
/>
|
||||||
@ -78,7 +78,7 @@
|
|||||||
>
|
>
|
||||||
<hc-shout-button
|
<hc-shout-button
|
||||||
v-if="post.author"
|
v-if="post.author"
|
||||||
:disabled="isAuthor(post.author.id)"
|
:disabled="isAuthor"
|
||||||
:count="post.shoutedCount"
|
:count="post.shoutedCount"
|
||||||
:is-shouted="post.shoutedByCurrentUser"
|
:is-shouted="post.shoutedByCurrentUser"
|
||||||
:post-id="post.id"
|
:post-id="post.id"
|
||||||
@ -91,12 +91,12 @@
|
|||||||
<comment-list :post="post" @toggleNewCommentForm="toggleNewCommentForm" @reply="reply" />
|
<comment-list :post="post" @toggleNewCommentForm="toggleNewCommentForm" @reply="reply" />
|
||||||
<ds-space margin-bottom="large" />
|
<ds-space margin-bottom="large" />
|
||||||
<comment-form
|
<comment-form
|
||||||
v-if="showNewCommentForm && !post.author.blocked"
|
v-if="showNewCommentForm && !isBlocked"
|
||||||
ref="commentForm"
|
ref="commentForm"
|
||||||
:post="post"
|
:post="post"
|
||||||
@createComment="createComment"
|
@createComment="createComment"
|
||||||
/>
|
/>
|
||||||
<ds-placeholder v-if="post.author.blocked">
|
<ds-placeholder v-if="isBlocked">
|
||||||
{{ $t('settings.blocked-users.explanation.commenting-disabled') }}
|
{{ $t('settings.blocked-users.explanation.commenting-disabled') }}
|
||||||
<br />
|
<br />
|
||||||
{{ $t('settings.blocked-users.explanation.commenting-explanation') }}
|
{{ $t('settings.blocked-users.explanation.commenting-explanation') }}
|
||||||
@ -169,14 +169,21 @@ export default {
|
|||||||
this.deletePostCallback,
|
this.deletePostCallback,
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
|
isBlocked() {
|
||||||
|
const { author } = this.post
|
||||||
|
if (!author) return false
|
||||||
|
return author.blocked
|
||||||
|
},
|
||||||
|
isAuthor() {
|
||||||
|
const { author } = this.post
|
||||||
|
if (!author) return false
|
||||||
|
return this.$store.getters['auth/user'].id === author.id
|
||||||
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
reply(message) {
|
reply(message) {
|
||||||
this.$refs.commentForm && this.$refs.commentForm.reply(message)
|
this.$refs.commentForm && this.$refs.commentForm.reply(message)
|
||||||
},
|
},
|
||||||
isAuthor(id) {
|
|
||||||
return this.$store.getters['auth/user'].id === id
|
|
||||||
},
|
|
||||||
async deletePostCallback() {
|
async deletePostCallback() {
|
||||||
try {
|
try {
|
||||||
await this.$apollo.mutate(deletePostMutation(this.post.id))
|
await this.$apollo.mutate(deletePostMutation(this.post.id))
|
||||||
|
|||||||
@ -1721,10 +1721,10 @@
|
|||||||
jimp-compact "^0.8.0"
|
jimp-compact "^0.8.0"
|
||||||
workbox-cdn "^4.3.1"
|
workbox-cdn "^4.3.1"
|
||||||
|
|
||||||
"@nuxtjs/sentry@^3.2.3":
|
"@nuxtjs/sentry@^3.2.4":
|
||||||
version "3.2.3"
|
version "3.2.4"
|
||||||
resolved "https://registry.yarnpkg.com/@nuxtjs/sentry/-/sentry-3.2.3.tgz#ac102faeb9b1d6ad65d14abdb9705173108dc6c2"
|
resolved "https://registry.yarnpkg.com/@nuxtjs/sentry/-/sentry-3.2.4.tgz#736c4b62e76c788eefd6a27c879658541a130bab"
|
||||||
integrity sha512-3dTH9y2Of70h7JSk73kuxRMd9zxidwMsZp/OJJlb66b73rKR9dZtBCkH6J7z1vh+32b5IZh9vLP1LfWZaHnd0Q==
|
integrity sha512-asM9pt/bdHLoALIea2OVOB/2S8OUx4vLhzi30B747Z6o0WLxB9RVYMsGgzjBO7Q7CEdrqei4UNEgTfE1G7EKTg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@sentry/browser" "^5.12.1"
|
"@sentry/browser" "^5.12.1"
|
||||||
"@sentry/integrations" "^5.12.0"
|
"@sentry/integrations" "^5.12.0"
|
||||||
@ -7270,13 +7270,12 @@ eslint-plugin-import@~2.20.1:
|
|||||||
read-pkg-up "^2.0.0"
|
read-pkg-up "^2.0.0"
|
||||||
resolve "^1.12.0"
|
resolve "^1.12.0"
|
||||||
|
|
||||||
eslint-plugin-jest@~23.6.0:
|
eslint-plugin-jest@~23.7.0:
|
||||||
version "23.6.0"
|
version "23.7.0"
|
||||||
resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-23.6.0.tgz#508b32f80d44058c8c01257c0ee718cfbd521e9d"
|
resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-23.7.0.tgz#84d5603b6e745b59898cb6750df6a44782a39b04"
|
||||||
integrity sha512-GH8AhcFXspOLqak7fqnddLXEJsrFyvgO8Bm60SexvKSn1+3rWYESnCiWUOCUcBTprNSDSE4CtAZdM4EyV6gPPw==
|
integrity sha512-zkiyGlvJeHNjAEz8FaIxTXNblJJ/zj3waNbYbgflK7K6uy0cpE5zJBt/JpJtOBGM/UGkC6BqsQ4n0y7kQ2HA8w==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@typescript-eslint/experimental-utils" "^2.5.0"
|
"@typescript-eslint/experimental-utils" "^2.5.0"
|
||||||
micromatch "^4.0.2"
|
|
||||||
|
|
||||||
eslint-plugin-node@~11.0.0:
|
eslint-plugin-node@~11.0.0:
|
||||||
version "11.0.0"
|
version "11.0.0"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user