Browse Source

fix: resolve ContactInputForm v-model binding and lint errors

Fix ContactInputForm v-model binding issue that was causing "no contact info" error
when adding contacts. The component was using incorrect prop name for v-model.

**Changes:**
- Update ContactInputForm to use standard `modelValue` prop instead of `input`
- Fix v-model binding by using `update:modelValue` event emission
- Remove unused `Model` import from vue-facing-decorator
- Replace `@ts-ignore` with `@ts-expect-error` in ShareMyContactInfoView

**Fixes:**
- Contact input field now properly updates parent component state
- Eliminates "There was no contact info to add" error when DID is entered
- Resolves Vue 3 v-model compatibility issues
- Clears remaining lint errors

**Testing:**
- Contact form should now accept DID input and process it correctly
- v-model binding works as expected between ContactInputForm and ContactsView
pull/142/head
Matthew Raymer 1 week ago
parent
commit
902116a990
  1. 57
      .gitignore
  2. 2
      dev-dist/sw.js
  3. 2
      dev-dist/sw.js.map
  4. 24
      src/components/ContactInputForm.vue
  5. 4
      src/views/ShareMyContactInfoView.vue
  6. 11
      temp.har

57
.gitignore

@ -56,4 +56,59 @@ icons
*.log
android/app/src/main/res/
sql-wasm.wasm
sql-wasm.wasm
# Temporary and generated files
temp.*
*.tmp
*.temp
*.bak
*.cache
git.diff.*
*.har
# Development artifacts
dev-dist/
*.map
# OS generated files
Thumbs.db
ehthumbs.db
Desktop.ini
# Capacitor build outputs and generated files
android/app/build/
android/capacitor-cordova-android-plugins/build/
ios/App/App/public/assets/
ios/App/App/build/
ios/App/build/
# Capacitor generated configs (keep source configs)
android/app/build/intermediates/assets/debug/mergeDebugAssets/capacitor.*.json
android/app/build/intermediates/compressed_assets/debug/compressDebugAssets/out/assets/capacitor.*.json.jar
android/app/build/intermediates/merged_java_res/debug/mergeDebugJavaResource/feature-capacitor-cordova-android-plugins.jar
android/app/build/outputs/aar/capacitor-cordova-android-plugins-debug.aar
# Keep these Capacitor files in version control:
# - capacitor.config.json (root, electron, ios)
# - src/main.capacitor.ts
# - vite.config.capacitor.mts
# - android/capacitor.settings.gradle
# - android/app/capacitor.build.gradle
# - android/app/src/main/assets/capacitor.plugins.json
# Electron build outputs and generated files
electron/build/
electron/app/
electron/dist/
electron/out/
# Keep these Electron files in version control:
# - electron/src/preload.ts (source)
# - electron/src/index.ts (source)
# - electron/src/setup.ts (source)
# - electron/package.json
# - electron/electron-builder.config.json
# - electron/build-packages.sh
# - electron/live-runner.js
# - electron/resources/electron-publisher-custom.js

2
dev-dist/sw.js

@ -82,7 +82,7 @@ define(['./workbox-54d0af47'], (function (workbox) { 'use strict';
"revision": "3ca0b8505b4bec776b69afdba2768812"
}, {
"url": "index.html",
"revision": "0.ejnjchn8vfg"
"revision": "0.5ufvvsiqllo"
}], {});
workbox.cleanupOutdatedCaches();
workbox.registerRoute(new workbox.NavigationRoute(workbox.createHandlerBoundToURL("index.html"), {

2
dev-dist/sw.js.map

File diff suppressed because one or more lines are too long

24
src/components/ContactInputForm.vue

@ -64,7 +64,7 @@
</template>
<script lang="ts">
import { Component, Vue, Prop, Model } from "vue-facing-decorator";
import { Component, Vue, Prop } from "vue-facing-decorator";
/**
* ContactInputForm - Contact input form component
@ -76,23 +76,29 @@ import { Component, Vue, Prop, Model } from "vue-facing-decorator";
*/
@Component({
name: "ContactInputForm",
emits: [
"submit",
"show-onboard-meeting",
"registration-required",
"navigate-onboard-meeting",
"qr-scan",
"update:modelValue",
],
})
export default class ContactInputForm extends Vue {
@Prop({ required: true }) isRegistered!: boolean;
@Model("input", { type: String, default: "" })
inputValue!: string;
@Prop({ type: String, default: "" }) modelValue!: string;
/**
* Update the input value and emit change event
* Computed property for v-model binding
*/
set input(value: string) {
this.inputValue = value;
this.$emit("input", value);
get inputValue(): string {
return this.modelValue;
}
get input(): string {
return this.inputValue;
set inputValue(value: string) {
this.$emit("update:modelValue", value);
}
}
</script>

4
src/views/ShareMyContactInfoView.vue

@ -77,9 +77,9 @@ export default class ShareMyContactInfoView extends Vue {
async mounted() {
// Debug logging for test diagnosis
const settings = await this.$settings();
// @ts-ignore
const activeDid = settings?.activeDid;
// @ts-ignore
// @ts-expect-error
window.__SHARE_CONTACT_DEBUG__ = { settings, activeDid };
// eslint-disable-next-line no-console
console.log("[ShareMyContactInfoView] mounted", { settings, activeDid });

11
temp.har

@ -1,11 +0,0 @@
{
"log": {
"version": "1.2",
"creator": {
"name": "WebInspector",
"version": "537.36"
},
"pages": [],
"entries": []
}
}
Loading…
Cancel
Save