Fraser commited on
Commit
82f6d8e
·
1 Parent(s): 6b45861

try profile

Browse files
src/lib/components/PicletGenerator/PicletGenerator.svelte CHANGED
@@ -11,8 +11,9 @@
11
  import { EnhancedCaptionService } from '$lib/services/enhancedCaption';
12
  import { CanonicalService } from '$lib/services/canonicalService';
13
  import { incrementDiscoveryCounter, addRarityScore, calculateRarityPoints } from '$lib/db/gameState';
 
14
  // import { withQwenTimeout } from '$lib/utils/qwenTimeout'; // Unused since qwen is disabled
15
-
16
  interface Props extends PicletGeneratorProps {}
17
 
18
  let {
@@ -20,6 +21,9 @@
20
  fluxClient,
21
  gptOssClient
22
  }: Props = $props();
 
 
 
23
 
24
  // GPT-OSS-120B text generation
25
  const generateText = async (prompt: string): Promise<string> => {
@@ -644,7 +648,8 @@ Create a concise visual description (1-3 sentences, max 100 words). Focus only o
644
  picletData,
645
  workflowState.objectName || undefined,
646
  plainAttributes,
647
- workflowState.visualDetails || undefined
 
648
  );
649
 
650
  const picletId = await savePicletInstance(picletInstance);
 
11
  import { EnhancedCaptionService } from '$lib/services/enhancedCaption';
12
  import { CanonicalService } from '$lib/services/canonicalService';
13
  import { incrementDiscoveryCounter, addRarityScore, calculateRarityPoints } from '$lib/db/gameState';
14
+ import { authStore } from '$lib/stores/auth';
15
  // import { withQwenTimeout } from '$lib/utils/qwenTimeout'; // Unused since qwen is disabled
16
+
17
  interface Props extends PicletGeneratorProps {}
18
 
19
  let {
 
21
  fluxClient,
22
  gptOssClient
23
  }: Props = $props();
24
+
25
+ // Get current user info for discoverer attribution
26
+ const auth = $derived(authStore);
27
 
28
  // GPT-OSS-120B text generation
29
  const generateText = async (prompt: string): Promise<string> => {
 
648
  picletData,
649
  workflowState.objectName || undefined,
650
  plainAttributes,
651
+ workflowState.visualDetails || undefined,
652
+ $auth.userInfo // Pass user info for discoverer attribution
653
  );
654
 
655
  const picletId = await savePicletInstance(picletInstance);
src/lib/components/PicletGenerator/PicletResult.svelte CHANGED
@@ -5,6 +5,7 @@
5
  import { generatedDataToPicletInstance } from '$lib/db/piclets';
6
  import PicletCard from '../Piclets/PicletCard.svelte';
7
  import PicletDetail from '../Piclets/PicletDetail.svelte';
 
8
 
9
  interface Props {
10
  workflowState: PicletWorkflowState;
@@ -18,6 +19,9 @@
18
  let showDetailView = $state(false);
19
  let saveError: string | null = $state(null);
20
 
 
 
 
21
  // Create piclet instance from the generated data
22
  $effect(() => {
23
  if (workflowState.picletImage && workflowState.picletConcept && workflowState.picletStats) {
@@ -41,7 +45,8 @@
41
  picletData,
42
  workflowState.objectName || undefined,
43
  plainAttributes,
44
- workflowState.visualDetails || undefined
 
45
  ).then(instance => {
46
  picletInstance = { ...instance, id: 0 }; // Add temporary id for display
47
  }).catch(error => {
 
5
  import { generatedDataToPicletInstance } from '$lib/db/piclets';
6
  import PicletCard from '../Piclets/PicletCard.svelte';
7
  import PicletDetail from '../Piclets/PicletDetail.svelte';
8
+ import { authStore } from '$lib/stores/auth';
9
 
10
  interface Props {
11
  workflowState: PicletWorkflowState;
 
19
  let showDetailView = $state(false);
20
  let saveError: string | null = $state(null);
21
 
22
+ // Get current user info for discoverer attribution
23
+ const auth = $derived(authStore);
24
+
25
  // Create piclet instance from the generated data
26
  $effect(() => {
27
  if (workflowState.picletImage && workflowState.picletConcept && workflowState.picletStats) {
 
45
  picletData,
46
  workflowState.objectName || undefined,
47
  plainAttributes,
48
+ workflowState.visualDetails || undefined,
49
+ $auth.userInfo // Pass user info for discoverer attribution
50
  ).then(instance => {
51
  picletInstance = { ...instance, id: 0 }; // Add temporary id for display
52
  }).catch(error => {
src/lib/db/piclets.ts CHANGED
@@ -3,6 +3,7 @@ import type { PicletInstance } from './schema';
3
  import { PicletType } from '../types/picletTypes';
4
  import type { PicletStats } from '../types';
5
  import { generatePicletId } from '../utils/picletId';
 
6
 
7
  // Interface for generated piclet data (from PicletResult component)
8
  interface GeneratedPicletData {
@@ -22,12 +23,14 @@ interface GeneratedPicletData {
22
  * @param objectName - Optional normalized object name (e.g., "eiffel tower")
23
  * @param attributes - Optional array of variation attributes (first item is the primary variation)
24
  * @param visualDetails - Optional additional visual details
 
25
  */
26
  export async function generatedDataToPicletInstance(
27
  data: GeneratedPicletData,
28
  objectName?: string,
29
  attributes?: string[],
30
- visualDetails?: string
 
31
  ): Promise<Omit<PicletInstance, 'id'>> {
32
  if (!data.stats) {
33
  throw new Error('Generated data must have stats to create PicletInstance');
@@ -56,7 +59,12 @@ export async function generatedDataToPicletInstance(
56
  isCanonical: false, // Will be set by server
57
  canonicalId: undefined,
58
  variationAttributes: attributes || [],
59
- discoveredBy: 'Player', // Will be set by server
 
 
 
 
 
60
  discoveredAt: new Date(),
61
  scanCount: 1,
62
 
 
3
  import { PicletType } from '../types/picletTypes';
4
  import type { PicletStats } from '../types';
5
  import { generatePicletId } from '../utils/picletId';
6
+ import type { UserInfo } from '../stores/auth';
7
 
8
  // Interface for generated piclet data (from PicletResult component)
9
  interface GeneratedPicletData {
 
23
  * @param objectName - Optional normalized object name (e.g., "eiffel tower")
24
  * @param attributes - Optional array of variation attributes (first item is the primary variation)
25
  * @param visualDetails - Optional additional visual details
26
+ * @param userInfo - Optional HF user info for discoverer attribution
27
  */
28
  export async function generatedDataToPicletInstance(
29
  data: GeneratedPicletData,
30
  objectName?: string,
31
  attributes?: string[],
32
+ visualDetails?: string,
33
+ userInfo?: UserInfo | null
34
  ): Promise<Omit<PicletInstance, 'id'>> {
35
  if (!data.stats) {
36
  throw new Error('Generated data must have stats to create PicletInstance');
 
59
  isCanonical: false, // Will be set by server
60
  canonicalId: undefined,
61
  variationAttributes: attributes || [],
62
+ // Populate discoverer info from auth if available
63
+ discoveredBy: userInfo?.preferred_username || 'Player', // Legacy field
64
+ discovererSub: userInfo?.sub,
65
+ discovererUsername: userInfo?.preferred_username,
66
+ discovererName: userInfo?.name,
67
+ discovererPicture: userInfo?.picture,
68
  discoveredAt: new Date(),
69
  scanCount: 1,
70