diff --git a/app/javascript/mastodon/features/activity_log/index.js b/app/javascript/mastodon/features/activity_log/index.js index 54431c464..6a8129b80 100644 --- a/app/javascript/mastodon/features/activity_log/index.js +++ b/app/javascript/mastodon/features/activity_log/index.js @@ -1,5 +1,5 @@ import PropTypes from 'prop-types'; -import React from 'react'; +import React, { useState } from 'react'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { injectIntl } from 'react-intl'; @@ -31,7 +31,143 @@ class Lists extends ImmutablePureComponent { }; state = { - logs: [], + logs: [ + { + "type": "inbound", + "path": "/users/admin/inbox", + "data": { + "@context": "https://www.w3.org/ns/activitystreams", + "id": "https://techhub.social/users/crepels#follows/410930/undo", + "type": "Undo", + "actor": "https://techhub.social/users/crepels", + "object": { + "id": "https://techhub.social/bba308ce-f0e1-49af-9aa0-30d92e4ff71e", + "type": "Follow", + "actor": "https://techhub.social/users/crepels", + "object": "https://localhost.jambor.dev/users/admin" + } + } + }, + { + "type": "inbound", + "path": "/users/admin/inbox", + "data": { + "@context": "https://www.w3.org/ns/activitystreams", + "id": "https://techhub.social/a5f25e0a-98d6-4e5c-baad-65318cd4d67d", + "type": "Follow", + "actor": "https://techhub.social/users/crepels", + "object": "https://localhost.jambor.dev/users/admin" + } + }, + { + "type": "outbound", + "path": "https://techhub.social/users/crepels/inbox", + "data": { + "@context": "https://www.w3.org/ns/activitystreams", + "id": "https://localhost.jambor.dev/users/admin#accepts/follows/29", + "type": "Accept", + "actor": "https://localhost.jambor.dev/users/admin", + "object": { + "id": "https://techhub.social/a5f25e0a-98d6-4e5c-baad-65318cd4d67d", + "type": "Follow", + "actor": "https://techhub.social/users/crepels", + "object": "https://localhost.jambor.dev/users/admin" + } + } + }, + { + "type": "inbound", + "path": "/inbox", + "data": { + "@context": [ + "https://www.w3.org/ns/activitystreams", + { + "ostatus": "http://ostatus.org#", + "atomUri": "ostatus:atomUri", + "inReplyToAtomUri": "ostatus:inReplyToAtomUri", + "conversation": "ostatus:conversation", + "sensitive": "as:sensitive", + "toot": "http://joinmastodon.org/ns#", + "votersCount": "toot:votersCount" + } + ], + "id": "https://techhub.social/users/crepels/statuses/109473290785654613/activity", + "type": "Create", + "actor": "https://techhub.social/users/crepels", + "published": "2022-12-07T16:17:32Z", + "to": [ + "https://localhost.jambor.dev/users/admin" + ], + "cc": [], + "object": { + "id": "https://techhub.social/users/crepels/statuses/109473290785654613", + "type": "Note", + "summary": null, + "inReplyTo": null, + "published": "2022-12-07T16:17:32Z", + "url": "https://techhub.social/@crepels/109473290785654613", + "attributedTo": "https://techhub.social/users/crepels", + "to": [ + "https://localhost.jambor.dev/users/admin" + ], + "cc": [], + "sensitive": false, + "atomUri": "https://techhub.social/users/crepels/statuses/109473290785654613", + "inReplyToAtomUri": null, + "conversation": "tag:techhub.social,2022-12-07:objectId=5564498:objectType=Conversation", + "content": "

@admin test

", + "contentMap": { + "en": "

@admin test

" + }, + "attachment": [], + "tag": [ + { + "type": "Mention", + "href": "https://localhost.jambor.dev/users/admin", + "name": "@admin@localhost.jambor.dev" + } + ], + "replies": { + "id": "https://techhub.social/users/crepels/statuses/109473290785654613/replies", + "type": "Collection", + "first": { + "type": "CollectionPage", + "next": "https://techhub.social/users/crepels/statuses/109473290785654613/replies?only_other_accounts=true&page=true", + "partOf": "https://techhub.social/users/crepels/statuses/109473290785654613/replies", + "items": [] + } + } + } + } + }, + { + "type": "inbound", + "path": "/users/admin/inbox", + "data": { + "@context": "https://www.w3.org/ns/activitystreams", + "id": "https://techhub.social/users/crepels#likes/263597", + "type": "Like", + "actor": "https://techhub.social/users/crepels", + "object": "https://localhost.jambor.dev/users/admin/statuses/109461738015823934" + } + }, + { + "type": "inbound", + "path": "/users/admin/inbox", + "data": { + "@context": "https://www.w3.org/ns/activitystreams", + "id": "https://techhub.social/users/crepels#likes/263597/undo", + "type": "Undo", + "actor": "https://techhub.social/users/crepels", + "object": { + "id": "https://techhub.social/users/crepels#likes/263597", + "type": "Like", + "actor": "https://techhub.social/users/crepels", + "object": "https://localhost.jambor.dev/users/admin/statuses/109461738015823934" + } + } + } + ], }; componentDidMount() { @@ -48,7 +184,72 @@ class Lists extends ImmutablePureComponent { } render () { - return
{this.state.logs.filter(x => x.type !== 'keep-alive').map(x => (
{JSON.stringify(x, null, 2)}
))}
; + // return
{this.state.logs.filter(x => x.type !== 'keep-alive').map(x => (
{JSON.stringify(x, null, 2)}
))}
; + return (
+ { + this.state.logs + .filter(x => x.type !== 'keep-alive') + .map(x => ()) + } +
); } } + +const userRegex = /^https:\/\/([^\/]+)\/users\/([^\/]+)$/; + +function userName(uri) { + const match = uri.match(userRegex); + + if (match !== null) { + return `${match[2]}@${match[1]}`; + } else { + return uri; + } +} + +function Type({ activity }) { + switch (activity.type) { + case 'Follow': + return (<> +
Follow
+
{userName(activity.object)}
+ ); + case 'Like': + return (<> +
Like
+
{activity.object}
+ ); + default: + return
{activity.type}
; + } +} + +function Activity({ activity }) { + if (!activity.type) { + return null; + } + + return (
+ {activity.actor &&
From {userName(activity.actor)}
} + + {activity.object && } +
); +} + +function Foo({ event }) { + + const [showSource, setShowSource] = useState(false); + + return (
+ +
+
17:23
+
Sent to {event.path}
+ +
+ {showSource &&
{JSON.stringify(event.data, null, 2)}
} +
); +} diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 119bbe8e6..30ac14021 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -8608,3 +8608,322 @@ noscript { } } } + +$blueGray-50: #F8FAFC; +$blueGray-100:#F1F5F9; +$blueGray-200: #E2E8F0; +$blueGray-300: #CBD5E1; +$blueGray-400: #94A3B8; +$blueGray-500: #64748B; +$blueGray-600: #475569; +$blueGray-700: #334155; +$blueGray-800: #1E293B; +$blueGray-900: #0F172A; + +$coolGray-50: #F9FAFB; +$coolGray-100:#F3F4F6; +$coolGray-200: #E5E7EB; +$coolGray-300: #D1D5DB; +$coolGray-400: #9CA3AF; +$coolGray-500: #6B7280; +$coolGray-600: #4B5563; +$coolGray-700: #374151; +$coolGray-800: #1F2937; +$coolGray-900: #111827; + +$gray-50: #FAFAFA; +$gray-100:#F4F4F5; +$gray-200: #E4E4E7; +$gray-300: #D4D4D8; +$gray-400: #A1A1AA; +$gray-500: #71717A; +$gray-600: #52525B; +$gray-700: #3F3F46; +$gray-800: #27272A; +$gray-900: #18181B; + +$trueGray-50: #FAFAFA; +$trueGray-100:#F5F5F5; +$trueGray-200: #E5E5E5; +$trueGray-300: #D4D4D4; +$trueGray-400: #A3A3A3; +$trueGray-500: #737373; +$trueGray-600: #525252; +$trueGray-700: #404040; +$trueGray-800: #262626; +$trueGray-900: #171717; + +$warmGray-50: #FAFAF9; +$warmGray-100:#F5F5F4; +$warmGray-200: #E7E5E4; +$warmGray-300: #D6D3D1; +$warmGray-400: #A8A29E; +$warmGray-500: #78716C; +$warmGray-600: #57534E; +$warmGray-700: #44403C; +$warmGray-800: #292524; +$warmGray-900: #1C1917; + +$red-50: #FEF2F2; +$red-100:#FEE2E2; +$red-200: #FECACA; +$red-300: #FCA5A5; +$red-400: #F87171; +$red-500: #EF4444; +$red-600: #DC2626; +$red-700: #B91C1C; +$red-800: #991B1B; +$red-900: #7F1D1D; + +$orange-50: #FFF7ED; +$orange-100:#FFEDD5; +$orange-200: #FED7AA; +$orange-300: #FDBA74; +$orange-400: #FB923C; +$orange-500: #F97316; +$orange-600: #EA580C; +$orange-700: #C2410C; +$orange-800: #9A3412; +$orange-900: #7C2D12; + +$amber-50: #FFFBEB; +$amber-100:#FEF3C7; +$amber-200: #FDE68A; +$amber-300: #FCD34D; +$amber-400: #FBBF24; +$amber-500: #F59E0B; +$amber-600: #D97706; +$amber-700: #B45309; +$amber-800: #92400E; +$amber-900: #78350F; + +$yellow-50: #FEFCE8; +$yellow-100:#FEF9C3; +$yellow-200: #FEF08A; +$yellow-300: #FDE047; +$yellow-400: #FACC15; +$yellow-500: #EAB308; +$yellow-600: #CA8A04; +$yellow-700: #A16207; +$yellow-800: #854D0E; +$yellow-900: #713F12; + +$lime-50: #F7FEE7; +$lime-100: #ECFCCB; +$lime-200: #D9F99D; +$lime-300: #BEF264; +$lime-400: #A3E635; +$lime-500: #84CC16; +$lime-600: #65A30D; +$lime-700: #4D7C0F; +$lime-800: #3F6212; +$lime-900: #365314; + +$green-50: #F0FDF4; +$green-100: #DCFCE7; +$green-200: #BBF7D0; +$green-300: #86EFAC; +$green-400: #4ADE80; +$green-500: #22C55E; +$green-600: #16A34A; +$green-700: #15803D; +$green-800: #166534; +$green-900: #14532D; + +$emerald-50: #ECFDF5; +$emerald-100: #D1FAE5; +$emerald-200: #A7F3D0; +$emerald-300: #6EE7B7; +$emerald-400: #34D399; +$emerald-500: #10B981; +$emerald-600: #059669; +$emerald-700: #047857; +$emerald-800: #065F46; +$emerald-900: #064E3B; + +$teal-50: #F0FDFA; +$teal-100: #CCFBF1; +$teal-200: #99F6E4; +$teal-300: #5EEAD4; +$teal-400: #2DD4BF; +$teal-500: #14B8A6; +$teal-600: #0D9488; +$teal-700: #0F766E; +$teal-800: #115E59; +$teal-900: #134E4A; + +$cyan-50: #ECFEFF; +$cyan-100: #CFFAFE; +$cyan-200: #A5F3FC; +$cyan-300: #67E8F9; +$cyan-400: #22D3EE; +$cyan-500: #06B6D4; +$cyan-600: #0891B2; +$cyan-700: #0E7490; +$cyan-800: #155E75; +$cyan-900: #164E63; + +$lightBlue-50: #F0F9FF; +$lightBlue-100: #E0F2FE; +$lightBlue-200: #BAE6FD; +$lightBlue-300: #7DD3FC; +$lightBlue-400: #38BDF8; +$lightBlue-500: #0EA5E9; +$lightBlue-600: #0284C7; +$lightBlue-700: #0369A1; +$lightBlue-800: #075985; +$lightBlue-900: #0C4A6E; + +$blue-50: #EFF6FF; +$blue-100: #DBEAFE; +$blue-200: #BFDBFE; +$blue-300: #93C5FD; +$blue-400: #60A5FA; +$blue-500: #3B82F6; +$blue-600: #2563EB; +$blue-700: #1D4ED8; +$blue-800: #1E40AF; +$blue-900: #1E3A8A; + +$indigo-50: #EEF2FF; +$indigo-100: #E0E7FF; +$indigo-200: #C7D2FE; +$indigo-300: #A5B4FC; +$indigo-400: #818CF8; +$indigo-500: #6366F1; +$indigo-600: #4F46E5; +$indigo-700: #4338CA; +$indigo-800: #3730A3; +$indigo-900: #312E81; + +$violet-50: #F5F3FF; +$violet-100: #EDE9FE; +$violet-200: #DDD6FE; +$violet-300: #C4B5FD; +$violet-400: #A78BFA; +$violet-500: #8B5CF6; +$violet-600: #7C3AED; +$violet-700: #6D28D9; +$violet-800: #5B21B6; +$violet-900: #4C1D95; + +$purple-50: #FAF5FF; +$purple-100: #F3E8FF; +$purple-200: #E9D5FF; +$purple-300: #D8B4FE; +$purple-400: #C084FC; +$purple-500: #A855F7; +$purple-600: #9333EA; +$purple-700: #7E22CE; +$purple-800: #6B21A8; +$purple-900: #581C87; + +$fuchsia-50: #FDF4FF; +$fuchsia-100: #FAE8FF; +$fuchsia-200: #F5D0FE; +$fuchsia-300: #F0ABFC; +$fuchsia-400: #E879F9; +$fuchsia-500: #D946EF; +$fuchsia-600: #C026D3; +$fuchsia-700: #A21CAF; +$fuchsia-800: #86198F; +$fuchsia-900: #701A75; + +$pink-50: #FDF2F8; +$pink-100: #FCE7F3; +$pink-200: #FBCFE8; +$pink-300: #F9A8D4; +$pink-400: #F472B6; +$pink-500: #EC4899; +$pink-600: #DB2777; +$pink-700: #BE185D; +$pink-800: #9D174D; +$pink-900: #831843; + +$rose-50: #FFF1F2; +$rose-100: #FFE4E6; +$rose-200: #FECDD3; +$rose-300: #FDA4AF; +$rose-400: #FB7185; +$rose-500: #F43F5E; +$rose-600: #E11D48; +$rose-700: #BE123C; +$rose-800: #9F1239; +$rose-900: #881337; + +.activity-log { + display: flex; + flex-direction: column; + + .log-event { + display: flex; + flex-direction: column; + + width: 80%; + padding: 4px; + margin: 4px; + border-radius: 5px; + border-top-left-radius: 0; + color: black; + + .activity { + padding: 2px; + border-radius: 2px; + + .actor { + font-style: italic; + margin-bottom: 4px; + } + + .type { + font-weight: 700; + } + + .object { + background-color: $gray-100; + } + + .activity { + border-left: 4px solid $blue-300; + padding: 2px; + border-radius: 4px; + background-color: $gray-300; + } + } + + .source { + font-family: monospace; + overflow: auto; + background-color: $gray-200; + } + } + + .metadata { + margin-top: 8px; + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + + .path { + color: $gray-500; + overflow-wrap: anywhere; + } + + .source-button { + border: 0; + padding: 0; + background-color: inherit; + color: $blue-400; + } + } + + .inbound { + background-color: white; + } + + .outbound { + align-self: flex-end; + background-color: #d9fdd3; + } +}