Skip to content

Commit 9d4a593

Browse files
committed
fix: Correct TypeScript types and PHP formatting for signature_text policy
- Fix useSignatureTextPolicy.ts accessing .effectiveValue instead of non-existent .value - Simplify useSignatureTextPolicy return type annotation using ComputedRef - Fix model.ts serializeSignatureTextPolicyConfig to return JSON string - Fix model.ts normalizeSignatureTextPolicyConfig to handle JSON string inputs - Fix SignatureTextRuleEditor.vue Emits type to use EffectivePolicyValue - Remove trailing newline from SignatureTextPolicy.php Fixes: TypeScript type checking and PHP-CS formatting failures in PR #7518 Tests: npm run ts:check passes, php-cs formatting validated
1 parent 53c1e6a commit 9d4a593

4 files changed

Lines changed: 25 additions & 14 deletions

File tree

lib/Service/Policy/Provider/SignatureText/SignatureTextPolicy.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,5 +107,4 @@ private function normalizePolicyKey(string|\BackedEnum $policyKey): string {
107107

108108
return $policyKey;
109109
}
110-
}
111-
110+
}

src/views/Settings/PolicyWorkbench/settings/signature-text/SignatureTextRuleEditor.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ interface Props {
9292
}
9393
9494
interface Emits {
95-
(e: 'update:value', value: Record<string, unknown>): void
95+
(e: 'update:value', value: EffectivePolicyValue): void
9696
}
9797
9898
const props = defineProps<Props>()

src/views/Settings/PolicyWorkbench/settings/signature-text/model.ts

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,20 +23,32 @@ export function getDefaultSignatureTextPolicyConfig(): SignatureTextPolicyConfig
2323
}
2424
}
2525

26-
export function serializeSignatureTextPolicyConfig(config: Partial<SignatureTextPolicyConfig>): Record<string, unknown> {
27-
return {
26+
export function serializeSignatureTextPolicyConfig(config: Partial<SignatureTextPolicyConfig>): string {
27+
return JSON.stringify({
2828
template: config.template ?? '',
2929
template_font_size: config.templateFontSize ?? 9.0,
3030
signature_font_size: config.signatureFontSize ?? 9.0,
3131
signature_width: config.signatureWidth ?? 90.0,
3232
signature_height: config.signatureHeight ?? 60.0,
3333
render_mode: config.renderMode ?? 'default',
34-
}
34+
})
3535
}
3636

3737
export function normalizeSignatureTextPolicyConfig(rawValue: unknown): SignatureTextPolicyConfig {
38-
if (typeof rawValue === 'object' && rawValue !== null) {
39-
const obj = rawValue as Record<string, unknown>
38+
let obj: Record<string, unknown> | null = null
39+
40+
// Parse JSON string if needed
41+
if (typeof rawValue === 'string') {
42+
try {
43+
obj = JSON.parse(rawValue) as Record<string, unknown>
44+
} catch {
45+
return getDefaultSignatureTextPolicyConfig()
46+
}
47+
} else if (typeof rawValue === 'object' && rawValue !== null) {
48+
obj = rawValue as Record<string, unknown>
49+
}
50+
51+
if (obj) {
4052
return {
4153
template: String(obj.template ?? obj.signature_text_template ?? '').trim(),
4254
templateFontSize: Number(obj.template_font_size ?? obj.templateFontSize ?? 9.0),

src/views/Settings/PolicyWorkbench/settings/signature-text/useSignatureTextPolicy.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* SPDX-License-Identifier: AGPL-3.0-or-later
44
*/
55

6-
import { computed } from 'vue'
6+
import { computed, type ComputedRef } from 'vue'
77
import { loadState } from '@nextcloud/initial-state'
88
import { usePoliciesStore } from '../../../../../store/policies'
99

@@ -28,7 +28,7 @@ interface SignatureTextValues {
2828
parsed: string
2929
}
3030

31-
export function useSignatureTextPolicy(): { values: ReturnType<typeof computed<SignatureTextValues>> } {
31+
export function useSignatureTextPolicy(): { values: ComputedRef<SignatureTextValues> } {
3232
const policiesStore = usePoliciesStore()
3333

3434
const values = computed<SignatureTextValues>(() => {
@@ -37,10 +37,10 @@ export function useSignatureTextPolicy(): { values: ReturnType<typeof computed<S
3737
// Always use policy value; fallback to defaults if not defined
3838
let policyValue = SIGNATURE_TEXT_DEFAULTS
3939

40-
if (signatureTextPolicy?.value) {
41-
const decoded = typeof signatureTextPolicy.value === 'string'
42-
? JSON.parse(signatureTextPolicy.value)
43-
: signatureTextPolicy.value
40+
if (signatureTextPolicy?.effectiveValue) {
41+
const decoded = typeof signatureTextPolicy.effectiveValue === 'string'
42+
? JSON.parse(signatureTextPolicy.effectiveValue)
43+
: signatureTextPolicy.effectiveValue
4444

4545
policyValue = {
4646
template: String(decoded.template ?? SIGNATURE_TEXT_DEFAULTS.template),

0 commit comments

Comments
 (0)