Start work on account display

Also no idea wtf is going on with the models
This commit is contained in:
Melody Becker 2024-11-21 16:34:20 +01:00
parent 9acecfd7f6
commit 5fb5dae31e
14 changed files with 225 additions and 152 deletions

View file

@ -0,0 +1,18 @@
<div class="account-header">
<Account::Header::Profilepicture @meta={{@data.icon}} />
<div class="account-header-">
</div>
</div>
<div class="account-header">
<Account::Header::Profilepicture @meta={{@data.icon}} />
<div class="account-header-text">
<Note::Formatter
@classes="note-user-displayname"
@content={{@data.displayname}}
@server={{@data.originServer}}
/>
<p class="note-user-displayname"></p>
<p class="note-user-handle">{{@data.originServer.id}}</p>
</div>
</div>

View file

@ -0,0 +1 @@
<img class="profile-picture" src="{{@meta.url}}" alt="{{@meta.altText}}" />

View file

@ -1 +1,3 @@
{{yield}} <div class="profile-overview">
<Account::Header @data={{@data}} />
</div>

View file

@ -1,36 +1,36 @@
import Model, { attr, hasMany, type AsyncHasMany } from '@ember-data/model' import Model, { attr, hasMany, type AsyncHasMany } from '@ember-data/model';
import type CustomAccountFieldModel from './custom-account-field' import type CustomAccountFieldModel from './custom-account-field';
import type MediaMetadataModel from './media-metadata' import type MediaMetadataModel from './media-metadata';
import type OriginServer from './origin-server' import type OriginServer from './origin-server';
export default class Account extends Model { export default class Account extends Model {
@attr declare createdAt: Date @attr declare createdAt: Date;
@attr declare updatedAt: Date @attr declare updatedAt: Date;
@attr declare username: string @attr declare username: string;
@attr declare originServer: OriginServer @attr declare originServer: OriginServer;
@attr declare originServerId: number @attr declare originServerId: number;
@attr declare displayName: string @attr declare displayName: string;
@hasMany('custom-account-field') @hasMany('custom-account-field')
declare customFields: AsyncHasMany<CustomAccountFieldModel> declare customFields: AsyncHasMany<CustomAccountFieldModel>;
@attr declare customFieldIds: Array<number> @attr declare customFieldIds: Array<number>;
@attr declare isBot: boolean @attr declare isBot: boolean;
@attr declare description: string @attr declare description: string;
@attr declare icon: MediaMetadataModel @attr declare icon: MediaMetadataModel;
@attr declare iconId: string @attr declare iconId: string;
@attr declare banner: MediaMetadataModel @attr declare banner: MediaMetadataModel;
@attr declare bannerId: string @attr declare bannerId: string;
@attr declare background: MediaMetadataModel @attr declare background: MediaMetadataModel;
@attr declare backgroundId: string @attr declare backgroundId: string;
@attr declare relationIds: Array<number> @attr declare relationIds: Array<number>;
@attr declare indexable: boolean @attr declare indexable: boolean;
@attr declare restrictedFollow: boolean @attr declare restrictedFollow: boolean;
@attr declare identifiesAs: Array<string> @attr declare identifiesAs: Array<string>;
@attr declare pronouns: Array<string> @attr declare pronouns: Array<string>;
@attr declare roles: Array<string> @attr declare roles: Array<string>;
} }
declare module 'ember-data/types/registries/model' { declare module 'ember-data/types/registries/model' {
export default interface ModelRegistry { export default interface ModelRegistry {
account: Account account: Account;
} }
} }

View file

@ -1,16 +1,16 @@
import Model, { attr } from '@ember-data/model' import Model, { attr } from '@ember-data/model';
export default class CustomAccountField extends Model { export default class CustomAccountField extends Model {
@attr declare createdAt: Date @attr declare createdAt: Date;
@attr declare updatedAt: Date @attr declare updatedAt: Date;
@attr declare key: string @attr declare key: string;
@attr declare value: string @attr declare value: string;
@attr declare verified?: boolean @attr declare verified?: boolean;
@attr declare belongsToId: string @attr declare belongsToId: string;
} }
declare module 'ember-data/types/registries/model' { declare module 'ember-data/types/registries/model' {
export default interface ModelRegistry { export default interface ModelRegistry {
customAccountField: CustomAccountField customAccountField: CustomAccountField;
} }
} }

View file

@ -1,17 +1,17 @@
import Model, { attr } from '@ember-data/model' import Model, { attr } from '@ember-data/model';
import type MediaMetadataModel from './media-metadata' import type MediaMetadataModel from './media-metadata';
import type OriginServer from './origin-server' import type OriginServer from './origin-server';
export default class Emote extends Model { export default class Emote extends Model {
@attr declare metadataId: string @attr declare metadataId: string;
@attr declare metadata: MediaMetadataModel @attr declare metadata: MediaMetadataModel;
@attr declare name: string @attr declare name: string;
@attr declare serverId: number @attr declare serverId: number;
@attr declare server: OriginServer @attr declare server: OriginServer;
} }
declare module 'ember-data/types/registries/model' { declare module 'ember-data/types/registries/model' {
export default interface ModelRegistry { export default interface ModelRegistry {
emote: Emote emote: Emote;
} }
} }

View file

@ -1,18 +1,18 @@
import Model, { attr } from '@ember-data/model' import Model, { attr } from '@ember-data/model';
export default class MediaMetadata extends Model { export default class MediaMetadata extends Model {
@attr declare createdAt: Date @attr declare createdAt: Date;
@attr declare updatedAt: Date @attr declare updatedAt: Date;
@attr declare isRemote: boolean @attr declare isRemote: boolean;
@attr declare url: string @attr declare url: string;
@attr declare mimeType: string @attr declare mimeType: string;
@attr declare name: string @attr declare name: string;
@attr declare altText: string @attr declare altText: string;
@attr declare blurred: boolean @attr declare blurred: boolean;
} }
declare module 'ember-data/types/registries/model' { declare module 'ember-data/types/registries/model' {
export default interface ModelRegistry { export default interface ModelRegistry {
mediaMetadata: MediaMetadata mediaMetadata: MediaMetadata;
} }
} }

View file

@ -1,32 +1,32 @@
import Model, { attr, hasMany, type AsyncHasMany } from '@ember-data/model' import Model, { attr, hasMany, type AsyncHasMany } from '@ember-data/model';
import type AccountModel from './account' import type AccountModel from './account';
import type MediaMetadataModel from './media-metadata' import type MediaMetadataModel from './media-metadata';
import type OriginServer from './origin-server' import type OriginServer from './origin-server';
export default class Note extends Model { export default class Note extends Model {
@attr declare content: string @attr declare content: string;
@attr declare originServer: OriginServer @attr declare originServer: OriginServer;
@attr declare originServerId: number @attr declare originServerId: number;
@attr declare reactionCount: number @attr declare reactionCount: number;
@attr declare createdAt: Date @attr declare createdAt: Date;
@attr declare updatedAt: Date @attr declare updatedAt: Date;
@attr declare author: AccountModel @attr declare author: AccountModel;
@attr declare authorId: string @attr declare authorId: string;
@attr declare contentWarning?: string @attr declare contentWarning?: string;
@attr declare inReplyToId?: string @attr declare inReplyToId?: string;
@attr declare quotesId?: string @attr declare quotesId?: string;
@attr declare emoteIds?: Array<string> @attr declare emoteIds?: Array<string>;
@hasMany('media-metadata') @hasMany('media-metadata')
declare attachments: AsyncHasMany<MediaMetadataModel> declare attachments: AsyncHasMany<MediaMetadataModel>;
@attr declare attachmentIds: Array<string> @attr declare attachmentIds: Array<string>;
@attr declare accessLevel: number @attr declare accessLevel: number;
@hasMany('account') declare pings?: AsyncHasMany<AccountModel> @hasMany('account') declare pings?: AsyncHasMany<AccountModel>;
@attr declare pingIds?: Array<string> @attr declare pingIds?: Array<string>;
@attr declare reactionIds: Array<number> @attr declare reactionIds: Array<number>;
} }
declare module 'ember-data/types/registries/model' { declare module 'ember-data/types/registries/model' {
export default interface ModelRegistry { export default interface ModelRegistry {
note: Note note: Note;
} }
} }

View file

@ -1,14 +1,14 @@
import Model, { attr } from '@ember-data/model' import Model, { attr } from '@ember-data/model';
export default class OriginServer extends Model { export default class OriginServer extends Model {
@attr() declare serverType: string @attr() declare serverType: string;
@attr() declare name: string @attr() declare name: string;
@attr() declare iconUrl: string @attr() declare iconUrl: string;
@attr() declare isSelf: boolean @attr() declare isSelf: boolean;
} }
declare module 'ember-data/types/registries/model' { declare module 'ember-data/types/registries/model' {
export default interface ModelRegistry { export default interface ModelRegistry {
originServer: OriginServer originServer: OriginServer;
} }
} }

View file

@ -1,15 +1,15 @@
import Model, { attr } from '@ember-data/model' import Model, { attr } from '@ember-data/model';
import type EmoteModel from './emote' import type EmoteModel from './emote';
export default class Reaction extends Model { export default class Reaction extends Model {
@attr declare noteId: string @attr declare noteId: string;
@attr declare reactorId: string @attr declare reactorId: string;
@attr declare emoteId: number @attr declare emoteId: number;
@attr declare emote: EmoteModel @attr declare emote: EmoteModel;
} }
declare module 'ember-data/types/registries/model' { declare module 'ember-data/types/registries/model' {
export default interface ModelRegistry { export default interface ModelRegistry {
reaction: Reaction reaction: Reaction;
} }
} }

View file

@ -1,16 +1,16 @@
import Model, { attr } from '@ember-data/model' import Model, { attr } from '@ember-data/model';
export default class Relation extends Model { export default class Relation extends Model {
@attr declare createdAt: Date @attr declare createdAt: Date;
@attr declare updatedAt: Date @attr declare updatedAt: Date;
@attr declare fromId: string @attr declare fromId: string;
@attr declare toId: string @attr declare toId: string;
@attr declare requested: boolean @attr declare requested: boolean;
@attr declare accepted: boolean @attr declare accepted: boolean;
} }
declare module 'ember-data/types/registries/model' { declare module 'ember-data/types/registries/model' {
export default interface ModelRegistry { export default interface ModelRegistry {
relation: Relation relation: Relation;
} }
} }

View file

@ -3,62 +3,62 @@
import Model, { attr } from '@ember-data/model'; import Model, { attr } from '@ember-data/model';
export default class Role extends Model { export default class Role extends Model {
@attr() declare createdAt: Date @attr() declare createdAt: Date;
@attr() declare updatedAt: Date @attr() declare updatedAt: Date;
@attr() declare name: string @attr() declare name: string;
@attr() declare priority: number @attr() declare priority: number;
@attr() declare isUserRole: boolean @attr() declare isUserRole: boolean;
@attr() declare isBuiltIn: boolean @attr() declare isBuiltIn: boolean;
@attr() declare canSendCustomReactions?: boolean @attr() declare canSendCustomReactions?: boolean;
@attr() declare autoCwPostsText?: string @attr() declare autoCwPostsText?: string;
@attr() declare withholdNotesRegexes?: Array<string> @attr() declare withholdNotesRegexes?: Array<string>;
@attr() declare canAssignRoles?: boolean @attr() declare canAssignRoles?: boolean;
@attr() declare canSupressInteractionsBetweenUsers?: boolean @attr() declare canSupressInteractionsBetweenUsers?: boolean;
@attr() declare canSendCustomEmotes?: boolean @attr() declare canSendCustomEmotes?: boolean;
@attr() declare canOverwriteDisplayNames?: boolean @attr() declare canOverwriteDisplayNames?: boolean;
@attr() declare canManageCustomEmotes?: boolean @attr() declare canManageCustomEmotes?: boolean;
@attr() declare canDeleteNotes?: boolean @attr() declare canDeleteNotes?: boolean;
@attr() declare canManageAvatarDecorations?: boolean @attr() declare canManageAvatarDecorations?: boolean;
@attr() declare canManageAds?: boolean @attr() declare canManageAds?: boolean;
@attr() declare blockedUsers?: Array<string> @attr() declare blockedUsers?: Array<string>;
@attr() declare hasMentionCountLimit?: boolean @attr() declare hasMentionCountLimit?: boolean;
@attr() declare disallowInteractionsWith?: Array<string> @attr() declare disallowInteractionsWith?: Array<string>;
@attr() declare withholdNotesBasedOnRegex?: boolean @attr() declare withholdNotesBasedOnRegex?: boolean;
@attr() declare fullAdmin?: boolean @attr() declare fullAdmin?: boolean;
@attr() declare canSendAnnouncements?: boolean @attr() declare canSendAnnouncements?: boolean;
@attr() declare autoNsfwMedia?: boolean @attr() declare autoNsfwMedia?: boolean;
@attr() declare scanCreatedPublicNotes?: boolean @attr() declare scanCreatedPublicNotes?: boolean;
@attr() declare scanCreatedPrivateNotes?: boolean @attr() declare scanCreatedPrivateNotes?: boolean;
@attr() declare canSendFollowerOnlyNotes?: boolean @attr() declare canSendFollowerOnlyNotes?: boolean;
@attr() declare canSendPrivateNotes?: boolean @attr() declare canSendPrivateNotes?: boolean;
@attr() declare canIncludeSurvey?: boolean @attr() declare canIncludeSurvey?: boolean;
@attr() declare canChangeDisplayName?: boolean @attr() declare canChangeDisplayName?: boolean;
@attr() declare canLogin?: boolean @attr() declare canLogin?: boolean;
@attr() declare canAffectOtherAdmins?: boolean @attr() declare canAffectOtherAdmins?: boolean;
@attr() declare autoCwPosts?: boolean @attr() declare autoCwPosts?: boolean;
@attr() declare scanCreatedFollowerOnlyNotes?: boolean @attr() declare scanCreatedFollowerOnlyNotes?: boolean;
@attr() declare canViewDeletedNotes?: boolean @attr() declare canViewDeletedNotes?: boolean;
@attr() declare mentionLimit?: number @attr() declare mentionLimit?: number;
@attr() declare withholdNotesForManualApproval?: boolean @attr() declare withholdNotesForManualApproval?: boolean;
@attr() declare canConfirmWithheldNotes?: boolean @attr() declare canConfirmWithheldNotes?: boolean;
@attr() declare canSendMedia?: boolean @attr() declare canSendMedia?: boolean;
@attr() declare canSendPublicNotes?: boolean @attr() declare canSendPublicNotes?: boolean;
@attr() declare canSendReplies?: boolean @attr() declare canSendReplies?: boolean;
@attr() declare canQuote?: boolean @attr() declare canQuote?: boolean;
@attr() declare canIncludeLinks?: boolean @attr() declare canIncludeLinks?: boolean;
@attr() declare canRecoverDeletedNotes?: boolean @attr() declare canRecoverDeletedNotes?: boolean;
@attr() declare canMentionOthers?: boolean @attr() declare canMentionOthers?: boolean;
@attr() declare scanCreatedLocalNotes?: boolean @attr() declare scanCreatedLocalNotes?: boolean;
@attr() declare canSendLocalNotes?: boolean @attr() declare canSendLocalNotes?: boolean;
@attr() declare canBoost?: boolean @attr() declare canBoost?: boolean;
@attr() declare canFederateFedi?: boolean @attr() declare canFederateFedi?: boolean;
@attr() declare canFederateBsky?: boolean @attr() declare canFederateBsky?: boolean;
@attr() declare canSubmitReports?: boolean @attr() declare canSubmitReports?: boolean;
} }
declare module 'ember-data/types/registries/model' { declare module 'ember-data/types/registries/model' {
export default interface ModelRegistry { export default interface ModelRegistry {
role: Role role: Role;
} }
} }

View file

@ -0,0 +1,26 @@
import { module, test } from 'qunit';
import { setupRenderingTest } from 'frontend-reactive/tests/helpers';
import { render } from '@ember/test-helpers';
import { hbs } from 'ember-cli-htmlbars';
module('Integration | Component | account/header', function (hooks) {
setupRenderingTest(hooks);
test('it renders', async function (assert) {
// Set any properties with this.set('myProperty', 'value');
// Handle any actions with this.set('myAction', function(val) { ... });
await render(hbs`<Account::Header />`);
assert.dom().hasText('');
// Template block usage:
await render(hbs`
<Account::Header>
template block text
</Account::Header>
`);
assert.dom().hasText('template block text');
});
});

View file

@ -0,0 +1,26 @@
import { module, test } from 'qunit'
import { setupRenderingTest } from 'frontend-reactive/tests/helpers'
import { render } from '@ember/test-helpers'
import { hbs } from 'ember-cli-htmlbars'
module('Integration | Component | account/profilepicture', function (hooks) {
setupRenderingTest(hooks)
test('it renders', async function (assert) {
// Set any properties with this.set('myProperty', 'value');
// Handle any actions with this.set('myAction', function(val) { ... });
await render(hbs`<Account::Header::Profilepicture />`)
assert.dom().hasText('')
// Template block usage:
await render(hbs`
<Account::Profilepicture>
template block text
</Account::Profilepicture>
`)
assert.dom().hasText('template block text')
})
})