Browse Source

notice product feed add\edit post

Andrii Zadorozhnii 12 years ago
parent
commit
190b9d7c7b
4 changed files with 38 additions and 7 deletions
  1. 12 0
      include/feed_state.hrl
  2. 4 3
      src/feed_server_api.erl
  3. 22 3
      src/kvs_feed.erl
  4. 0 1
      src/kvs_products.erl

+ 12 - 0
include/feed_state.hrl

@@ -8,3 +8,15 @@
         cached_friends,
         cached_friends,
         cached_groups }).
         cached_groups }).
 
 
+-record(product_state, {
+        owner = "feed_owner",
+        type :: product,
+        feed,
+        blog,
+        features,
+        specs,
+        gallery,
+        videos,
+        bundles,
+        callback=feed_server_api}).
+

+ 4 - 3
src/feed_server_api.erl

@@ -1,6 +1,7 @@
 -module(feed_server_api).
 -module(feed_server_api).
+-export([handle/3]).
 
 
 handle([Module|Parameters],Message,State) ->
 handle([Module|Parameters],Message,State) ->
-    Module = list_to_atom(binary_to_list(term_to_binary(Module))),
-    error_logger:info_msg("handle_notice Route: ~p Message ~p",[[Module|Parameters],Message]),
-    Module:handle_notice([Module|Parameters],Message,State).
+    error_logger:info_msg("[feed_server_api]handle_notice Route: ~p Message ~p",[[Module|Parameters],Message]),
+    M = if is_atom(Module)->Module; true-> list_to_atom(binary_to_list(term_to_binary(Module))) end,
+    M:handle_notice([M|Parameters],Message,State).

+ 22 - 3
src/kvs_feed.erl

@@ -180,10 +180,29 @@ purge_feed(FeedId) ->
     kvs:put(Feed#feed{top=undefined}).
     kvs:put(Feed#feed{top=undefined}).
 
 
 purge_unverified_feeds() ->
 purge_unverified_feeds() ->
-    [purge_feed(FeedId) || #user{feed=FeedId,status=S,email=E} <- kvs:all(user), E==undefined].
+    [purge_feed(FeedId) || #user{feed=FeedId, email=E} <- kvs:all(user), E==undefined].
 
 
 %% MQ API
 %% MQ API
 
 
+handle_notice([kvs_feed, feed, product, To, entry, EntryId, add],
+              [Fid, From, Title, Desc, Medias, Type],
+              #product_state{feed=F, blog=B, features=Ft, specs=S, gallery=G, videos=V, bundles=Bn} = State) ->
+  Member = lists:member(Fid, [F,B,Ft,S,G,V,Bn]),
+  if Member ->
+    error_logger:info_msg("kvs feed add entry; ~p | ~n", [Fid]),
+    add_entry(Fid, From, To, EntryId, Title, Desc, Medias, Type, "");
+    true -> skip end,
+  {noreply, State};
+
+handle_notice([kvs_feed, feed, _, _Who, entry, {_, Fid}=Eid, edit],
+              [_, _, Title, Desc],
+              #product_state{feed=F, blog=B, features=Ft, specs=S, gallery=G, videos=V, bundles=Bn}=State) ->
+  Member = lists:member(Fid, [F,B,Ft,S,G,V,Bn]),
+  if Member ->
+    case kvs:get(entry, Eid) of {error, notfound}->skip; {ok, Entry} -> kvs:put(Entry#entry{title=Title, description=Desc}) end;
+  true -> skip end,
+  {noreply, State};
+
 handle_notice(["kvs_feed", "group", GroupId, "entry", EntryId, "add"] = Route, [From|_] = Message, #state{owner = Owner, feed = Feed} = State) ->
 handle_notice(["kvs_feed", "group", GroupId, "entry", EntryId, "add"] = Route, [From|_] = Message, #state{owner = Owner, feed = Feed} = State) ->
     ?INFO("feed(~p): group message: Owner=~p, Route=~p, Message=~p", [self(), Owner, Route, Message]),
     ?INFO("feed(~p): group message: Owner=~p, Route=~p, Message=~p", [self(), Owner, Route, Message]),
     [From, _Destinations, Desc, Medias] = Message,
     [From, _Destinations, Desc, Medias] = Message,
@@ -258,7 +277,7 @@ handle_notice(["feed", "user", UId, "post_note"] = Route,
     kvs_feed:add_entry(Feed, UId, [], Id, Note, [], {user, system_note}, ""),
     kvs_feed:add_entry(Feed, UId, [], Id, Note, [], {user, system_note}, ""),
     {noreply, State};
     {noreply, State};
 
 
-handle_notice(["kvs_feed", _, WhoShares, "entry", NewEntryId, "share"] = Route,
+handle_notice(["kvs_feed", _, WhoShares, "entry", NewEntryId, "share"],
                 #entry{entry_id = _EntryId, description = Desc, media = Medias, to = Destinations,
                 #entry{entry_id = _EntryId, description = Desc, media = Medias, to = Destinations,
                 from = From} = E, #state{feed = Feed, type = user} = State) ->
                 from = From} = E, #state{feed = Feed, type = user} = State) ->
     %% FIXME: sharing is like posting to the wall
     %% FIXME: sharing is like posting to the wall
@@ -335,4 +354,4 @@ handle_notice(["kvs_feed","likes", _, _, "add_like"] = Route,  % _, _ is here be
     kvs_feed:add_like(FId, EId, UId),
     kvs_feed:add_like(FId, EId, UId),
     {noreply, State};
     {noreply, State};
 
 
-handle_notice(Route, Message, State) -> error_logger:error_msg("Unknown FEED notice").
+handle_notice(_Route, _Message, _State) -> error_logger:error_msg("Unknown FEED notice").

+ 0 - 1
src/kvs_products.erl

@@ -25,7 +25,6 @@ register(#product{} = Registration) ->
     error_logger:info_msg("PUT PRODUCT ~p", [Product]),
     error_logger:info_msg("PUT PRODUCT ~p", [Product]),
     kvs:put(Product),
     kvs:put(Product),
 %    init_mq(Product),
 %    init_mq(Product),
-%    mqs:notify([product, init], {E, Product#product.feed}),
     {ok, Product}.
     {ok, Product}.
 
 
 delete(Name) ->
 delete(Name) ->