Skip to content

[DataConnect] Incorrect generated code for enum lists in dart/flutter. #9391

@isenbj

Description

@isenbj

[REQUIRED] Environment info

firebase-tools: 14.22.0

system: MacOS

[REQUIRED] Test case

[REQUIRED] Steps to reproduce

enum Role {
  ADMIN
  ADJUSTER
  MANAGER
  DEVELOPER
}

type Member  @table {
    email: String! @col(dataType: "varchar(255)")
    firstName: String!
    lastName: String!
    phone: String
    roles: [Role!]
}

firebase dataconnect:sdk:generate

Generated code for a mutation that accepts a list of roles to update:

mutation UpdateProfile(
  # Basic profile information
  $email: String!
  $firstName: String!
  $lastName: String!
  $phone: String
  $roles: [Role!]
) @auth(level: USER) {
  # Step 2: Update member with provided fields
  member_upsert(
    data: {
      id_expr: "auth.uid"
      email: $email
      firstName: $firstName
      lastName: $lastName
      phone: $phone
      roles: $roles
    }
  )
}
    roles = Optional.optional(listDeserializer((data) => Role.values.byName(data)), listSerializer(enumSerializer));
    roles.value = json['roles'] == null ? null : (json['roles'] as List<dynamic>)
        .map((e) => Roles.fromJson(e))
        .toList();

There is no fromJson for enum. Either that should be generated, or firstWhere should be used

.map((e) => Role.values.firstWhere( (element) => element.name == e))

[REQUIRED] Actual behavior

Invalid Dart code

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions