Skip to content

Instantly share code, notes, and snippets.

@bourroush
Last active August 11, 2020 17:40
Show Gist options
  • Save bourroush/6f7ed3a5ce745532fe46eef618aab0f6 to your computer and use it in GitHub Desktop.
Save bourroush/6f7ed3a5ce745532fe46eef618aab0f6 to your computer and use it in GitHub Desktop.
Notifications - Customer Metafields
{% assign valid_keys = ['products','brands','story_prefs','bookmarks'] %}
{% assign customer = form.customer_id | get: "Customer" %}
{% assign u_customer = "Customer" | new: customer.id %}
{% assign u_customer.metafields = [] %}
{% assign customer.metafields = "Metafield" | get_all: {parent:customer} %}
{% for key in valid_keys %}
{% if form.field == key %}
{% assign c_metafield = null %}
{% for m in customer.metafields %}
{% if m.namespace == 'favourites' and m.key == key %}{% assign c_metafield = m %}{% endif %}
{% endfor %}
{% if c_metafield %}
{% assign metafield = 'Metafield' | new: c_metafield.id %}
{% assign metafield.namespace = 'favourites' %}
{% assign metafield.key = key %}
{% assign metafield.value_type = "string" %}
{% assign metafield.value = c_metafield.value %}
{% else %}
{% assign metafield = 'Metafield' | new %}
{% assign metafield.namespace = 'favourites' %}
{% assign metafield.key = key %}
{% assign metafield.value_type = "string" %}
{% assign metafield.value = "" %}
{% endif %}
{% if form.type == 'add' %}
{% if metafield.value %}
{% assign meta_array = metafield.value | split: ',' %}
{% assign meta_array[meta_array.size] = form.value %}
{% assign metafield.value = meta_array | uniq | join: ',' %}
{% else %}
{% assign metafield.value = form.value %}
{% endif %}
{% elsif form.type == 'remove' %}
{% assign meta_array = metafield.value | replace: "(,|^)\K" + form.value + "(,|$)", "" | split: ',' %}
{% assign metafield.value = meta_array | uniq | join: ',' %}
{% assign metafield.value = metafield.value | replace: ",,","," %}
{% assign metafield.value = metafield.value | replace: "^,","" %}
{% assign metafield.value = metafield.value | replace: ",$","" %}
{% endif %}
{% assign u_customer.metafields[u_customer.metafields.size] = metafield %}
{% endif %}
{% endfor %}
{% debug u_customer %}
{% if metafield.value == "" %}
{% assign metafield = metafield | delete %}
{% else %}
{% assign u_customer = u_customer | update %}
{% endif %}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment