• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Freegle / Iznik / 11495

09 May 2026 07:35AM UTC coverage: 69.06% (-3.8%) from 72.847%
11495

Pull #408

circleci

edwh
docs(migration): mark restartproject and repaircafewales as migrated (PR #408)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Pull Request #408: feat(batch): migrate check_cgas, visualise, tn_sync + dry-run improvements

9127 of 10554 branches covered (86.48%)

Branch coverage included in aggregate %.

507 of 663 new or added lines in 16 files covered. (76.47%)

11902 existing lines in 138 files now uncovered.

101630 of 149824 relevant lines covered (67.83%)

19.56 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

97.44
/iznik-nuxt3/components/ChatMessageAddress.vue
1
<template>
1✔
2
  <div>
1✔
3
    <b-row>
1✔
4
      <b-col cols="12" sm="6" :offset-sm="chatmessage.userid != me?.id ? 0 : 6">
1✔
5
        <div v-if="chatmessage.userid != me?.id" class="media">
1✔
6
          <b-card border-variant="success">
1✔
7
            <b-card-title>
1✔
8
              <h4>{{ otheruser?.displayname }} sent an address:</h4>
1✔
9
            </b-card-title>
1✔
10
            <b-card-text>
1✔
11
              <b-row>
1✔
12
                <b-col>
1✔
13
                  <pre
1✔
14
                    v-if="address"
188✔
15
                    :class="address.instructions ? '' : 'mb-2'"
188!
16
                    style="text-wrap: wrap"
188✔
17
                    >{{ multiline }}</pre
188✔
18
                  >
1✔
19
                  <pre v-else>This address has been deleted.</pre>
1✔
20
                  <hr v-if="address?.instructions" />
1✔
21
                  <div v-if="address?.instructions" class="mb-2">
1✔
22
                    {{ address.instructions }}
188✔
23
                  </div>
1✔
24
                </b-col>
1✔
25
              </b-row>
1✔
26
              <b-row v-if="address?.postcode">
1✔
27
                <b-col>
1✔
28
                  <l-map
1✔
29
                    ref="map"
1✔
30
                    :zoom="16"
1✔
31
                    :max-zoom="maxZoom"
1✔
32
                    :center="[address.lat, address.lng]"
1✔
33
                    :style="'width: 100%; height: 200px'"
1✔
34
                  >
35
                    <l-tile-layer
1✔
36
                      :url="osmtile()"
1✔
37
                      :attribution="attribution()"
1✔
38
                    />
1✔
39
                    <l-marker
1✔
40
                      :lat-lng="[address.lat, address.lng]"
1✔
41
                      :interactive="false"
1✔
42
                    />
1✔
43
                  </l-map>
1✔
44
                  <ExternalLink
1✔
45
                    :href="
1✔
46
                      'https://maps.google.com/?q=' +
47
                      address.lat +
48
                      ',' +
49
                      address.lng +
50
                      '&z=16'
51
                    "
52
                    class="mt-1 small"
1✔
53
                  >
1✔
54
                    View in Google Maps
55
                  </ExternalLink>
1✔
56
                </b-col>
1✔
57
              </b-row>
1✔
58
            </b-card-text>
1✔
59
          </b-card>
1✔
60
        </div>
1✔
61
        <div v-else class="media float-end">
1✔
62
          <b-card border-variant="success">
1✔
63
            <b-card-title>
1✔
64
              <h4>You sent an address:</h4>
1✔
65
            </b-card-title>
1✔
66
            <b-card-text>
1✔
67
              <b-row>
1✔
68
                <b-col cols="12">
1✔
69
                  <div v-if="address" class="d-flex justify-content-between">
1✔
70
                    <pre
1✔
71
                      :class="address.instructions ? '' : 'mb-2'"
1!
72
                      style="text-wrap: wrap"
1✔
73
                      >{{ multiline }}</pre
1✔
74
                    >
1✔
75
                    <div>
1✔
76
                      <b-button
1✔
77
                        variant="white"
1✔
78
                        class="ms-2"
1✔
79
                        @click="editAddress"
1✔
80
                        >Address Book</b-button
1✔
81
                      >
1✔
82
                    </div>
1✔
83
                  </div>
1✔
84
                  <pre v-else>This address has been deleted.</pre>
1✔
85
                  <div class="text-muted small">
1✔
86
                    Your address book lets you easily send addresses, and also
87
                    add instructions so that people can find you.
88
                  </div>
20✔
89
                  <hr v-if="address?.instructions" />
1✔
90
                  <div v-if="address?.instructions" class="mb-2">
1✔
91
                    {{ address.instructions }}
115✔
92
                  </div>
1✔
93
                </b-col>
1✔
94
              </b-row>
1✔
95
              <b-row v-if="address?.postcode">
1✔
96
                <b-col>
1✔
97
                  <l-map
1✔
98
                    ref="map"
1✔
99
                    :zoom="14"
1✔
100
                    :max-zoom="maxZoom"
1✔
101
                    :center="[address.lat, address.lng]"
1✔
102
                    :style="'width: 100%; height: 200px'"
1✔
103
                  >
104
                    <l-tile-layer
1✔
105
                      :url="osmtile()"
1✔
106
                      :attribution="attribution()"
1✔
107
                    />
1✔
108
                    <l-marker
1✔
109
                      :lat-lng="[address.lat, address.lng]"
1✔
110
                      :interactive="false"
1✔
111
                    />
1✔
112
                  </l-map>
1✔
113
                  <ExternalLink
1✔
114
                    :href="
1✔
115
                      'https://maps.google.com/?q=' +
116
                      address.lat +
117
                      ',' +
118
                      address.lng +
119
                      '&z=16'
120
                    "
121
                    class="mt-1 small"
1✔
122
                  >
1✔
123
                    View in Google Maps
124
                  </ExternalLink>
1✔
125
                </b-col>
1✔
126
              </b-row>
1✔
127
            </b-card-text>
1✔
128
          </b-card>
1✔
129
        </div>
1✔
130
      </b-col>
1✔
131
    </b-row>
1✔
132
    <AddressModal
1✔
133
      v-if="showAddress"
1✔
134
      :choose="true"
1✔
135
      t-o-d-o
1✔
136
      @chosen="sendAddress"
1✔
137
      @hidden="addressClosed"
1✔
138
    />
1✔
139
  </div>
1✔
140
</template>
141
<script setup>
142
import ExternalLink from './ExternalLink'
1✔
143
import AddressModal from './AddressModal'
1✔
144
import { useAddressStore } from '~/stores/address'
1✔
145
import { useChatStore } from '~/stores/chat'
1✔
146
import { useChatMessageBase } from '~/composables/useChat'
1✔
147
import { constructMultiLine } from '~/composables/usePAF'
1✔
148
import { attribution, osmtile } from '~/composables/useMap'
1✔
149
import { MAX_MAP_ZOOM } from '~/constants'
1✔
150
import { ref, computed, onMounted } from '#imports'
1✔
151

152
const props = defineProps({
1✔
153
  chatid: {
154
    type: Number,
155
    required: true,
156
  },
157
  id: {
158
    type: Number,
159
    required: true,
160
  },
161
  pov: {
162
    type: Number,
163
    required: false,
164
    default: null,
165
  },
166
})
167

168
// Store access
1✔
169
const addressStore = useAddressStore()
1✔
170
const chatStore = useChatStore()
1✔
171

172
// Chat base properties
1✔
173
const { otheruser, chatmessage, me } = useChatMessageBase(
1✔
174
  props.chatid,
1✔
175
  props.id,
1✔
176
  props.pov
1✔
177
)
1✔
178

179
// Component state
1✔
180
const showAddress = ref(false)
1✔
181
const address = ref(null)
1✔
182

183
// Computed properties
1✔
184
const maxZoom = computed(() => MAX_MAP_ZOOM)
1✔
185
const multiline = computed(() => constructMultiLine(address.value))
1✔
186

187
// Methods
1✔
188
const editAddress = async () => {
1✔
189
  await addressStore.fetch()
1✔
190
  showAddress.value = true
1✔
191
}
1✔
192

193
const addressClosed = async () => {
1✔
194
  await chatStore.fetchMessages(props.chatid)
1✔
195
  showAddress.value = false
1✔
196
}
1✔
197

198
const sendAddress = async (id) => {
1✔
199
  await chatStore.send(props.chatid, null, id)
1✔
200
  showAddress.value = false
1✔
201
}
1✔
202

203
// Setup
1✔
204
onMounted(async () => {
1✔
205
  if (process.client) {
20!
206
    await import('leaflet/dist/leaflet-src.esm')
×
UNCOV
207
  }
×
208

209
  // The addressid is (wrongly) stored in the message.
20✔
210
  const addressid = parseInt(chatmessage.value?.message)
20✔
211
  if (addressid) {
20✔
212
    address.value = await addressStore.fetch(addressid)
20✔
213
  }
20✔
214
})
20✔
215
</script>
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc