fix missing encode / decode for form fields within submissions
This commit is contained in:
parent
6d85dc660a
commit
b3cacb8481
@ -26,6 +26,8 @@ Template for next version
|
||||
|
||||
### Fixed
|
||||
|
||||
- missing encode / decode for form fields within submissions (https://github.com/ohmyform/ui/commit/30ff2c96bca20c1641d9cbb96c34cce934e1afea#r68602651)
|
||||
|
||||
### Security
|
||||
|
||||
## [1.0.2] - 2022-03-13
|
||||
|
||||
@ -6,6 +6,8 @@ import { FormFieldRatingModel } from './form.field.rating.model'
|
||||
|
||||
@ObjectType('FormField')
|
||||
export class FormFieldModel {
|
||||
readonly _id: number
|
||||
|
||||
@Field(() => ID)
|
||||
readonly id: string
|
||||
|
||||
@ -39,8 +41,9 @@ export class FormFieldModel {
|
||||
@Field(() => FormFieldRatingModel, { nullable: true })
|
||||
readonly rating: FormFieldRatingModel
|
||||
|
||||
constructor(document: FormFieldEntity) {
|
||||
this.id = document.id.toString()
|
||||
constructor(id: string, document: FormFieldEntity) {
|
||||
this._id = document.id
|
||||
this.id = id
|
||||
this.idx = document.idx
|
||||
this.title = document.title
|
||||
this.slug = document.slug
|
||||
|
||||
@ -30,7 +30,16 @@ export class FormResolver {
|
||||
): Promise<FormFieldModel[]> {
|
||||
const form = await cache.get<FormEntity>(cache.getCacheKey(FormEntity.name, parent._id))
|
||||
|
||||
return form.fields?.map(field => new FormFieldModel(field)).sort((a,b) => a.idx - b.idx) || []
|
||||
if (!form.fields) {
|
||||
return []
|
||||
}
|
||||
|
||||
return form.fields
|
||||
.sort((a,b) => a.idx - b.idx)
|
||||
.map(field => new FormFieldModel(
|
||||
this.idService.encode(field.id),
|
||||
field,
|
||||
))
|
||||
}
|
||||
|
||||
@ResolveField(() => [FormHookModel])
|
||||
|
||||
@ -4,12 +4,14 @@ import { SubmissionFieldModel } from '../../dto/submission/submission.field.mode
|
||||
import { FormFieldEntity } from '../../entity/form.field.entity'
|
||||
import { SubmissionFieldEntity } from '../../entity/submission.field.entity'
|
||||
import { FormFieldService } from '../../service/form/form.field.service'
|
||||
import { IdService } from '../../service/id.service'
|
||||
import { ContextCache } from '../context.cache'
|
||||
|
||||
@Resolver(() => SubmissionFieldModel)
|
||||
export class SubmissionFieldResolver {
|
||||
constructor(
|
||||
private readonly formFieldService: FormFieldService,
|
||||
private readonly idService: IdService,
|
||||
) {
|
||||
}
|
||||
|
||||
@ -33,6 +35,9 @@ export class SubmissionFieldResolver {
|
||||
return null
|
||||
}
|
||||
|
||||
return new FormFieldModel(field)
|
||||
return new FormFieldModel(
|
||||
this.idService.encode(field.id),
|
||||
field,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@ -7,6 +7,7 @@ import { Repository } from 'typeorm'
|
||||
import { SubmissionSetFieldInput } from '../../dto/submission/submission.set.field.input'
|
||||
import { SubmissionEntity } from '../../entity/submission.entity'
|
||||
import { SubmissionFieldContent, SubmissionFieldEntity } from '../../entity/submission.field.entity'
|
||||
import { IdService } from '../id.service'
|
||||
import { SubmissionHookService } from './submission.hook.service'
|
||||
import { SubmissionNotificationService } from './submission.notification.service'
|
||||
|
||||
@ -19,13 +20,16 @@ export class SubmissionSetFieldService {
|
||||
private readonly submissionFieldRepository: Repository<SubmissionFieldEntity>,
|
||||
private readonly webHook: SubmissionHookService,
|
||||
private readonly notifications: SubmissionNotificationService,
|
||||
private readonly idService: IdService,
|
||||
private readonly logger: PinoLogger,
|
||||
) {
|
||||
logger.setContext(this.constructor.name)
|
||||
}
|
||||
|
||||
async saveField(submission: SubmissionEntity, input: SubmissionSetFieldInput): Promise<void> {
|
||||
let field = submission.fields.find(field => field.field.id.toString() === input.field)
|
||||
const formFieldId = this.idService.decode(input.field)
|
||||
|
||||
let field = submission.fields.find(field => field.field.id === formFieldId)
|
||||
|
||||
submission.timeElapsed = dayjs().diff(dayjs(submission.created), 'second')
|
||||
|
||||
@ -38,7 +42,7 @@ export class SubmissionSetFieldService {
|
||||
field = new SubmissionFieldEntity()
|
||||
|
||||
field.submission = submission
|
||||
field.field = submission.form.fields.find(field => field.id.toString() === input.field)
|
||||
field.field = submission.form.fields.find(field => field.id === formFieldId)
|
||||
field.type = field.field.type
|
||||
field.content = this.parseData(field, input.data)
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user