-//viewSharesGrid :: [MTaskShare] -> Task [MTaskShare]
-//viewSharesGrid sh = allTasks [whileUnchanged (get $ getSDSShare m) (\s->treturn (m, s))\\m<-sh]
-// @ map (\(s,v)->{MTaskShare|s&value=v})
-// >>= enterChoice "Choose share" [ChooseFromGrid id]
-// >>= \s->treturn [s]
-//{anyTask (map viewShare sh) <<@ ArrangeHorizontal
-// >>| return (hd sh)
+viewSharesGrid :: (Shared (Maybe MTaskShare)) [MTaskShare] -> Task [BCValue]
+viewSharesGrid _ [] = viewInformation "No shares yet" [] []
+viewSharesGrid cs sh = (allTasks [watch (getSDSShare m)\\m<-sh] <<@ NoUserInterface)
+ >&^ \st->flip (<<@) NoUserInterface $ whileUnchanged st $ \mshs->enterChoice "" [ChooseFromGrid id]
+ [{MTaskShare|ss&value=s}\\s<-fromJust mshs & ss<-sh]
+// >>* [OnValue (withValue $ \s->Just (set (Just s) cs))]
+ @! fromJust mshs