Skip to content

Commit 24941df

Browse files
lucaslylclaude
andcommitted
Remove MaybeBase64Field, use StringField for cardThumbnailURL
MaybeBase64Field was a StringField subclass whose only purpose was to display "(Base64 encoded value)" instead of raw data. Now that cardThumbnail (ImageDef) exists as the proper image field, the workaround is no longer needed. Replace all usages with plain StringField and update test snapshots accordingly. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent e0e6052 commit 24941df

7 files changed

Lines changed: 16 additions & 43 deletions

File tree

docs/spec.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ Each spec type has specific characteristics and use cases:
6464

6565
**Example Use Cases**:
6666
- `SocialMediaLink` - Composite field for social platform data
67-
- `MaybeBase64Field` - String field with base64 encoding capabilities
6867
- `TextAreaField` - Multi-line text input field
6968
- `GeoPointField` - Coordinate field for maps
7069

packages/base/card-api.gts

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2631,23 +2631,6 @@ export function getDefaultFileMenuItems(
26312631
return menuItems;
26322632
}
26332633

2634-
// TODO: This is a simple workaround until the thumbnailURL is converted into an actual image field
2635-
export class MaybeBase64Field extends StringField {
2636-
static embedded = class Embedded extends Component<typeof this> {
2637-
get isBase64() {
2638-
return this.args.model?.startsWith('data:');
2639-
}
2640-
<template>
2641-
{{#if this.isBase64}}
2642-
<em>(Base64 encoded value)</em>
2643-
{{else}}
2644-
{{@model}}
2645-
{{/if}}
2646-
</template>
2647-
};
2648-
static atom = MaybeBase64Field.embedded;
2649-
}
2650-
26512634
// ImageDef
26522635
class Isolated extends Component<typeof ImageDef> {
26532636
<template>
@@ -2954,7 +2937,7 @@ export class CardInfoField extends FieldDef {
29542937
@field name = contains(StringField);
29552938
@field summary = contains(StringField);
29562939
@field cardThumbnail = linksTo(() => ImageDef);
2957-
@field cardThumbnailURL = contains(MaybeBase64Field);
2940+
@field cardThumbnailURL = contains(StringField);
29582941
@field theme = linksTo(() => Theme);
29592942
@field notes = contains(MarkdownField);
29602943
}
@@ -2992,10 +2975,7 @@ export class CardDef extends BaseDef {
29922975
return this.cardInfo.summary;
29932976
},
29942977
});
2995-
// TODO: this will probably be an image or image url field card when we have it
2996-
// UPDATE: we now have a Base64ImageField card. we can probably refactor this
2997-
// to use it directly now (or wait until a better image field comes along)
2998-
@field cardThumbnailURL = contains(MaybeBase64Field, {
2978+
@field cardThumbnailURL = contains(StringField, {
29992979
computeVia: function (this: CardDef) {
30002980
return this.cardInfo.cardThumbnailURL;
30012981
},

packages/experiments-realm/puppy-card.gts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import Base64ImageField from 'https://cardstack.com/base/base64-image';
22
import StringField from 'https://cardstack.com/base/string';
33
import {
4-
MaybeBase64Field,
54
CardDef,
65
field,
76
contains,
@@ -18,7 +17,7 @@ export class PuppyCard extends CardDef {
1817
return this.name;
1918
},
2019
});
21-
@field cardThumbnailURL = contains(MaybeBase64Field, {
20+
@field cardThumbnailURL = contains(StringField, {
2221
computeVia: function (this: PuppyCard) {
2322
return this.picture.base64;
2423
},

packages/host/tests/cards/puppy-card.gts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import Base64ImageField from 'https://cardstack.com/base/base64-image';
22
import {
3-
MaybeBase64Field,
43
CardDef,
54
field,
65
contains,
@@ -16,7 +15,7 @@ export class PuppyCard extends CardDef {
1615
return this.name;
1716
},
1817
});
19-
@field cardThumbnailURL = contains(MaybeBase64Field, {
18+
@field cardThumbnailURL = contains(StringField, {
2019
computeVia: function (this: PuppyCard) {
2120
return this.picture.base64;
2221
},

packages/host/tests/helpers/base-realm.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,6 @@ let containsMany: (typeof CardAPIModule)['containsMany'];
9393
let isCard: (typeof CardAPIModule)['isCard'];
9494
let linksTo: (typeof CardAPIModule)['linksTo'];
9595
let linksToMany: (typeof CardAPIModule)['linksToMany'];
96-
let MaybeBase64Field: (typeof CardAPIModule)['MaybeBase64Field'];
9796
let createFromSerialized: (typeof CardAPIModule)['createFromSerialized'];
9897
let updateFromSerialized: (typeof CardAPIModule)['updateFromSerialized'];
9998
let serializeCard: (typeof CardAPIModule)['serializeCard'];
@@ -229,7 +228,6 @@ async function initialize() {
229228
unsubscribeFromChanges,
230229
flushLogs,
231230
queryableValue,
232-
MaybeBase64Field,
233231
getFieldDescription,
234232
ReadOnlyField,
235233
instanceOf,
@@ -280,7 +278,6 @@ export {
280278
isCard,
281279
linksTo,
282280
linksToMany,
283-
MaybeBase64Field,
284281
createFromSerialized,
285282
updateFromSerialized,
286283
serializeCard,

packages/host/tests/integration/components/card-basics-test.gts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ import {
7474
linksTo,
7575
linksToMany,
7676
MarkdownField,
77-
MaybeBase64Field,
7877
NumberField,
7978
PhoneNumberField,
8079
queryableValue,
@@ -1215,7 +1214,7 @@ module('Integration | card-basics', function (hooks) {
12151214
return this.firstName;
12161215
},
12171216
});
1218-
@field cardThumbnailURL = contains(MaybeBase64Field, {
1217+
@field cardThumbnailURL = contains(StringField, {
12191218
computeVia: function (this: Person) {
12201219
return this.image.base64;
12211220
},
@@ -1273,7 +1272,7 @@ module('Integration | card-basics', function (hooks) {
12731272
return this.firstName;
12741273
},
12751274
});
1276-
@field cardThumbnailURL = contains(MaybeBase64Field, {
1275+
@field cardThumbnailURL = contains(StringField, {
12771276
computeVia: function (this: Person) {
12781277
return this.image.base64;
12791278
},

packages/realm-server/tests/helpers/index.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2080,7 +2080,7 @@ export const cardDefinition: Definition['fields'] = {
20802080
type: 'contains',
20812081
isComputed: true,
20822082
fieldOrCard: {
2083-
name: 'MaybeBase64Field',
2083+
name: 'StringField',
20842084
module: 'https://cardstack.com/base/card-api',
20852085
},
20862086
isPrimitive: true,
@@ -2116,7 +2116,7 @@ export const cardDefinition: Definition['fields'] = {
21162116
type: 'contains',
21172117
isComputed: false,
21182118
fieldOrCard: {
2119-
name: 'MaybeBase64Field',
2119+
name: 'StringField',
21202120
module: 'https://cardstack.com/base/card-api',
21212121
},
21222122
isPrimitive: true,
@@ -2170,7 +2170,7 @@ export const cardDefinition: Definition['fields'] = {
21702170
type: 'contains',
21712171
isComputed: true,
21722172
fieldOrCard: {
2173-
name: 'MaybeBase64Field',
2173+
name: 'StringField',
21742174
module: 'https://cardstack.com/base/card-api',
21752175
},
21762176
isPrimitive: true,
@@ -2206,7 +2206,7 @@ export const cardDefinition: Definition['fields'] = {
22062206
type: 'contains',
22072207
isComputed: false,
22082208
fieldOrCard: {
2209-
name: 'MaybeBase64Field',
2209+
name: 'StringField',
22102210
module: 'https://cardstack.com/base/card-api',
22112211
},
22122212
isPrimitive: true,
@@ -2296,7 +2296,7 @@ export const cardDefinition: Definition['fields'] = {
22962296
type: 'contains',
22972297
isComputed: false,
22982298
fieldOrCard: {
2299-
name: 'MaybeBase64Field',
2299+
name: 'StringField',
23002300
module: 'https://cardstack.com/base/card-api',
23012301
},
23022302
isPrimitive: true,
@@ -2341,7 +2341,7 @@ export const cardDefinition: Definition['fields'] = {
23412341
type: 'contains',
23422342
isComputed: true,
23432343
fieldOrCard: {
2344-
name: 'MaybeBase64Field',
2344+
name: 'StringField',
23452345
module: 'https://cardstack.com/base/card-api',
23462346
},
23472347
isPrimitive: true,
@@ -2404,7 +2404,7 @@ export const cardDefinition: Definition['fields'] = {
24042404
type: 'contains',
24052405
isComputed: false,
24062406
fieldOrCard: {
2407-
name: 'MaybeBase64Field',
2407+
name: 'StringField',
24082408
module: 'https://cardstack.com/base/card-api',
24092409
},
24102410
isPrimitive: true,
@@ -2449,7 +2449,7 @@ export const cardDefinition: Definition['fields'] = {
24492449
type: 'contains',
24502450
isComputed: true,
24512451
fieldOrCard: {
2452-
name: 'MaybeBase64Field',
2452+
name: 'StringField',
24532453
module: 'https://cardstack.com/base/card-api',
24542454
},
24552455
isPrimitive: true,
@@ -2514,7 +2514,7 @@ export const cardDefinition: Definition['fields'] = {
25142514
type: 'contains',
25152515
isComputed: false,
25162516
fieldOrCard: {
2517-
name: 'MaybeBase64Field',
2517+
name: 'StringField',
25182518
module: 'https://cardstack.com/base/card-api',
25192519
},
25202520
isPrimitive: true,
@@ -2552,7 +2552,7 @@ export const cardDefinition: Definition['fields'] = {
25522552
type: 'contains',
25532553
isComputed: true,
25542554
fieldOrCard: {
2555-
name: 'MaybeBase64Field',
2555+
name: 'StringField',
25562556
module: 'https://cardstack.com/base/card-api',
25572557
},
25582558
isPrimitive: true,

0 commit comments

Comments
 (0)