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

View file

@ -1,17 +1,17 @@
import Model, { attr } from '@ember-data/model'
import type MediaMetadataModel from './media-metadata'
import type OriginServer from './origin-server'
import Model, { attr } from '@ember-data/model';
import type MediaMetadataModel from './media-metadata';
import type OriginServer from './origin-server';
export default class Emote extends Model {
@attr declare metadataId: string
@attr declare metadata: MediaMetadataModel
@attr declare name: string
@attr declare serverId: number
@attr declare server: OriginServer
@attr declare metadataId: string;
@attr declare metadata: MediaMetadataModel;
@attr declare name: string;
@attr declare serverId: number;
@attr declare server: OriginServer;
}
declare module 'ember-data/types/registries/model' {
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 {
@attr declare createdAt: Date
@attr declare updatedAt: Date
@attr declare isRemote: boolean
@attr declare url: string
@attr declare mimeType: string
@attr declare name: string
@attr declare altText: string
@attr declare blurred: boolean
@attr declare createdAt: Date;
@attr declare updatedAt: Date;
@attr declare isRemote: boolean;
@attr declare url: string;
@attr declare mimeType: string;
@attr declare name: string;
@attr declare altText: string;
@attr declare blurred: boolean;
}
declare module 'ember-data/types/registries/model' {
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 type AccountModel from './account'
import type MediaMetadataModel from './media-metadata'
import type OriginServer from './origin-server'
import Model, { attr, hasMany, type AsyncHasMany } from '@ember-data/model';
import type AccountModel from './account';
import type MediaMetadataModel from './media-metadata';
import type OriginServer from './origin-server';
export default class Note extends Model {
@attr declare content: string
@attr declare originServer: OriginServer
@attr declare originServerId: number
@attr declare reactionCount: number
@attr declare createdAt: Date
@attr declare updatedAt: Date
@attr declare author: AccountModel
@attr declare authorId: string
@attr declare contentWarning?: string
@attr declare inReplyToId?: string
@attr declare quotesId?: string
@attr declare emoteIds?: Array<string>
@attr declare content: string;
@attr declare originServer: OriginServer;
@attr declare originServerId: number;
@attr declare reactionCount: number;
@attr declare createdAt: Date;
@attr declare updatedAt: Date;
@attr declare author: AccountModel;
@attr declare authorId: string;
@attr declare contentWarning?: string;
@attr declare inReplyToId?: string;
@attr declare quotesId?: string;
@attr declare emoteIds?: Array<string>;
@hasMany('media-metadata')
declare attachments: AsyncHasMany<MediaMetadataModel>
@attr declare attachmentIds: Array<string>
@attr declare accessLevel: number
@hasMany('account') declare pings?: AsyncHasMany<AccountModel>
@attr declare pingIds?: Array<string>
@attr declare reactionIds: Array<number>
declare attachments: AsyncHasMany<MediaMetadataModel>;
@attr declare attachmentIds: Array<string>;
@attr declare accessLevel: number;
@hasMany('account') declare pings?: AsyncHasMany<AccountModel>;
@attr declare pingIds?: Array<string>;
@attr declare reactionIds: Array<number>;
}
declare module 'ember-data/types/registries/model' {
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 {
@attr() declare serverType: string
@attr() declare name: string
@attr() declare iconUrl: string
@attr() declare isSelf: boolean
@attr() declare serverType: string;
@attr() declare name: string;
@attr() declare iconUrl: string;
@attr() declare isSelf: boolean;
}
declare module 'ember-data/types/registries/model' {
export default interface ModelRegistry {
originServer: OriginServer
originServer: OriginServer;
}
}

View file

@ -1,15 +1,15 @@
import Model, { attr } from '@ember-data/model'
import type EmoteModel from './emote'
import Model, { attr } from '@ember-data/model';
import type EmoteModel from './emote';
export default class Reaction extends Model {
@attr declare noteId: string
@attr declare reactorId: string
@attr declare emoteId: number
@attr declare emote: EmoteModel
@attr declare noteId: string;
@attr declare reactorId: string;
@attr declare emoteId: number;
@attr declare emote: EmoteModel;
}
declare module 'ember-data/types/registries/model' {
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 {
@attr declare createdAt: Date
@attr declare updatedAt: Date
@attr declare fromId: string
@attr declare toId: string
@attr declare requested: boolean
@attr declare accepted: boolean
@attr declare createdAt: Date;
@attr declare updatedAt: Date;
@attr declare fromId: string;
@attr declare toId: string;
@attr declare requested: boolean;
@attr declare accepted: boolean;
}
declare module 'ember-data/types/registries/model' {
export default interface ModelRegistry {
relation: Relation
relation: Relation;
}
}

View file

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