Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

headings/paragraphs don't seem to work #97

Open
rubdos opened this issue Jun 9, 2021 · 0 comments
Open

headings/paragraphs don't seem to work #97

rubdos opened this issue Jun 9, 2021 · 0 comments

Comments

@rubdos
Copy link
Contributor

rubdos commented Jun 9, 2021

Hiya!

I'm pushing pins of this form to Rockpool Dbus:

{
  "id": "vub-resto-2021-06-02",
  "time": "2021-06-02T12:00:00+02:00",
  "duration": 60,
  "layout": {
    "type": "genericPin",
    "title": "Resto menu",
    "lastUpdated": "2021-06-01T18:49:13+02:00",
    "tinyIcon": "system://images/DINNER_RESERVATION",
    "headings": [
      "Soup",
      "Menu 1",
      "Menu 2",
      "Wok"
    ],
    "paragraphs": [
      "Broccoli Soup",
      "Vol-Au-Vent Or Vegan Vol-Au-Vent With Cucumber Salad",
      "Lamb Epigram With Ratatouille And Potato Gratin",
      "Pork Stir-Fry With Sweet And Sour Sauce"
    ]
  }
}

I'm using a Ruby script for that:

Ruby script for VUB restaurant
#!/usr/bin/env ruby

require 'bundler/setup'

require "rubygems"
require "net/http"
require "pp"
require "time"
require "cgi"
require "dbus"

require "json"

VUB_RESTO_URL = URI("https://call-cc.be/files/vub-resto/etterbeek.en.json")

TUSSENFIX = "\n"

EMOJI = {
  "Soup" => "🥣",
  "Soep" => "🥣",
  "Menu 1" => "🍲",
  "Menu 2" => "🍳",
  "Veggie" => "🥗",
  "Fish" => "🐟",
  "Vis" => "🐟",
  "Pasta" => "🍝",
  "Wok" => "🥢",
}
EMOJI.default = "🥙"

def get_JSON()
  res = nil
  uri = URI(VUB_RESTO_URL)

  Net::HTTP.start(uri.host, uri.port,
                  :use_ssl => uri.scheme == "https") do |http|
    request = Net::HTTP::Get.new uri.request_uri

    res = http.request request
    return res.body
  end
end

def postit(data, location)
  vandaag = Date.today
  dagstr = vandaag.strftime("%F")
  noon = DateTime.new(vandaag.year, vandaag.month, vandaag.day, 12, 0, 0, Time.now.getlocal.zone)
  parsed_data = JSON.parse(data)

  rockwork_svc = DBus.session_bus["org.rockwork"]
  mgr = rockwork_svc["/org/rockwork/Manager"]
  mgr = mgr["org.rockwork.Manager"]

  pebbles = mgr.ListWatches()
  pebbles.map! { |pebble_name|
    pebble = rockwork_svc[pebble_name]
    pebble["org.rockwork.Pebble"]
  }

  parsed_data.each do |node|
    next unless node["date"] == dagstr
    lines = []
    headings = []
    paragraphs = []

    items = node["menus"]
    until items.empty?
      dish = items.shift

      headings.push(dish["name"])
      paragraphs.push(dish["dish"])
      line = "#{EMOJI[dish["name"]]} #{dish["name"]}: #{dish["dish"]}"
      lines.push(line)
    end

    pin = {
      id: "vub-resto-" + dagstr,
      time: noon.iso8601,
      duration: 60, # 1h
      layout: {
        type: "genericPin",
        title: "Resto menu",
        body: lines.join(TUSSENFIX),
        lastUpdated: DateTime.now.iso8601,
        tinyIcon: "system://images/DINNER_RESERVATION",
        headings: headings,
        paragraphs: paragraphs,
      }
    }
    puts pin
    puts JSON.generate(pin)
    pebbles.each do |pebble|
      pebble.insertTimelinePin(JSON.generate(pin))
    end

    return
  end
end

if ENV["VUBFOOD_LOCATION"].nil?
  warn "location not set, assume etterbeek"
  location = :etterbeek
elsif ENV["VUBFOOD_LOCATION"].downcase == "etterbeek"
  location = :etterbeek
elsif ENV["VUBFOOD_LOCATION"].downcase == "jette"
  location = :jette
end

postit(get_JSON(), location)

If you want to test it, you need Ruby and gem install ruby-dbus.


Sadly, the headings and paragraphs that I generate don't show up:

image

Talking on Rebble's Discord, someone tested out the produced JSON (assumingly on Android/iOS), and got it working for them:

image


I've been skimming the source code a bit, tracing the flow of the json from DBus into libpebble, and it seems like it should pass through perfectly. Do you have an idea what's happening here? I see that meetings should also have headings, but I didn't see them show up ever either (not that I ever paid attention...)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant