From 0a4a890b305dd224872abfc07732f7001c2c0308 Mon Sep 17 00:00:00 2001 From: Nick Sellen Date: Tue, 26 Nov 2019 18:19:28 +0100 Subject: [PATCH] Person to person sharing (#1799) * Initial work to add person-to-person sharing * A few sharing item UI refinements * Initial new sharing form with multiple upload * Add a grey box... * Remove redundant check * Rename sharing to offers * Add a mock chat to offer detail UI * Create mobile version of offer detail UI * Tidy up multiple image editing * A bit more polish on the offer UI Some translations, icon, breadcrumb, etc... * Snapshot update * Add create offer breadcrumb title * Rename a few offer related things for consistency * Offer image carousel, multi upload, various bits * Refine image upload/remove/re-position * Add websocket listeners for offer changes * Wireup offer conversation * Basic features to allow to accept/archive offers * Remove uneeded demo data * Move selected offer data/logic to own store module * Preserve offer filter in more places The create/save filter preservation does not work actually as we clear the store contents on route change. * Remove status from offer form Status change is now done via explicit actions/buttons * Use address autocomplete (#1878) * Use address autocomplete As it used to be. Also defaults place edit map to be group centre if available. * Remove uneeded extra wrapped div * Update setup for storyshots testing "sync: false" seems to be the new way it goes and will be the default in the future, see https://github.com/vuejs/vue-test-utils/issues/1137 The transition group stubs seem to be there by default now too, I think.. Anyway it works where it did no tbefore :) Also see https://github.com/vuejs/vue-test-utils/issues/1163 * Add @types/jest - for editor support See https://blog.jetbrains.com/webstorm/2018/10/testing-with-jest-in-webstorm/ * Increase test wait Not really sure why this changed, but don't want to think about it for now... * Add text to translation file * Use the spelling of the enemy * Simplify template logic * Ffix multicroppa * Further refine offer editing, esp MultiCroppa * Use gift as offers menu item * Remove offer upload progress logging * Nicer create offer button * Clear offerDetail on route leave * Add offer list loading indicator * Add offer body loading indicator * Add loading spinner when fetching offer for edit * Correctly wire up offer form reset events * Only show offer accept/archive buttons if active * Handle updating offers after save/websocket better * Cleaner mobile form view * Only show carousel if >1 image * Fix offer header when name is very long * Fix offer detail image display when only 1 * Fix overflowing text on group offers page * White background offer description * Snapshot update * Don't try and be fancy with updating users * Fix style style * Hide offers if group does not have the feature * Check route features in after route hook * Actually filter offers by current group * Add offers covert function to convert createdAt * Display offer information in latest messages I did it a slightly different way, by adding related offers into the latestMessages state... * Keep related offers up to date via websocket It's a bit overkeen actually as most users won't be in the conversations for the offers, so we don't need to update the related item... should really check we need it first * Import default offer status from store * Use current route query instead of getter * Use + for new offer button * Allow setting new_offer notification types * Show offer status if not active Although it's a bit ugly * Change notification type spinner * Add group.features to test mocks * Wrap settings forms in FormContainer * Rename to KFormContainer and move to base * Add confirm step to accept/archive offer buttons * Use photo icon for offer image placeholder * Add offer as a "fake" empty result * Filter offers by status and sort by createdAt desc ... entries can get added via websockets that might not fit the filter, and might need reordering * Refine group offer cards - use QImg instead of lots of CSS - use QItem inside for nicer layout * Correct RouterLink casing * Update test snapshots * Please the pedantic linter * Remove offer description helper * Extract mapErrors to statusMixin * Add accept/archive text into i18n * Remove unneeded code * Add offer filter status text to i18n * Correct size for new offer button * Remove one layer of div soup * Put the group offer cards in proper links * Remove commented out code * Convert offer in websocket update * Prefix functional getter with get For getNotificationTypeStatus * Preserve route query when clicking on offer conv * Use icon service for latest messages offer item * Move withoutKeys to utils * Use invisible class instead of custom css * Don't put const value in data * Save disk space by compacting template * Remove unneeded v-model Was only used when I tried out quasar :rules * Document MultiCroppa value prop a bit more * Document the data that latestMesages/related has --- src/__snapshots__/storyshots.spec.js.snap | 54 ++-- src/authuser/pages/Settings.story.js | 1 + src/authuser/pages/Settings.vue | 21 +- src/base/components/KFormContainer.vue | 13 + src/base/datastore.js | 2 + src/base/datastore/routerPlugin.js | 16 +- src/base/icons/icons.json | 4 +- src/base/routes/main.js | 80 +++++- src/base/socket.js | 12 + src/group/components/GroupSettings.vue | 41 ++- src/group/datastore/currentGroup.js | 18 +- src/group/pages/Settings.vue | 1 + src/locales/locale-en.json | 25 +- src/messages/api/conversations.js | 2 + src/messages/components/ChatConversation.vue | 1 + .../components/LatestConversations.vue | 6 + src/messages/components/LatestMessageItem.vue | 17 ++ src/messages/datastore/conversations.js | 12 + src/messages/datastore/latestMessages.js | 39 ++- src/offers/api/offers.js | 91 +++++++ src/offers/components/MultiCroppa.vue | 247 ++++++++++++++++++ src/offers/components/OfferDetail.vue | 24 ++ src/offers/components/OfferDetailBody.vue | 170 ++++++++++++ src/offers/components/OfferDetailHeader.vue | 51 ++++ src/offers/components/OfferForm.vue | 156 +++++++++++ src/offers/datastore/currentOffer.js | 85 ++++++ src/offers/datastore/index.js | 9 + src/offers/datastore/offers.js | 142 ++++++++++ src/offers/pages/GroupOffers.vue | 153 +++++++++++ src/offers/pages/OfferCreate.vue | 16 ++ src/offers/pages/OfferEdit.vue | 18 ++ src/sidenav/components/SidenavGroup.vue | 1 + src/sidenav/components/SidenavGroupUI.vue | 14 + src/topbar/datastore/breadcrumbs.js | 8 + src/utils/mixins/editMixin.js | 4 +- src/utils/mixins/statusMixin.js | 32 +++ src/utils/utils.js | 10 + test/enrichedFactories.js | 1 + test/mockdata.js | 1 + 39 files changed, 1550 insertions(+), 48 deletions(-) create mode 100644 src/base/components/KFormContainer.vue create mode 100644 src/offers/api/offers.js create mode 100644 src/offers/components/MultiCroppa.vue create mode 100644 src/offers/components/OfferDetail.vue create mode 100644 src/offers/components/OfferDetailBody.vue create mode 100644 src/offers/components/OfferDetailHeader.vue create mode 100644 src/offers/components/OfferForm.vue create mode 100644 src/offers/datastore/currentOffer.js create mode 100644 src/offers/datastore/index.js create mode 100644 src/offers/datastore/offers.js create mode 100644 src/offers/pages/GroupOffers.vue create mode 100644 src/offers/pages/OfferCreate.vue create mode 100644 src/offers/pages/OfferEdit.vue diff --git a/src/__snapshots__/storyshots.spec.js.snap b/src/__snapshots__/storyshots.spec.js.snap index 44315b941..61323373a 100644 --- a/src/__snapshots__/storyshots.spec.js.snap +++ b/src/__snapshots__/storyshots.spec.js.snap @@ -338,7 +338,7 @@ exports[`Storyshots ChangePhoto with photo 1`] = ` `; exports[`Storyshots ChatConversation closed 1`] = ` -
+